Комментарии 3
Хорошая работа, с ajv не работал, но как альтернатива валидации на основе рефлексии выглядит неплохо.
Вот тут правда немного не понял:
const max = 1 as number;
const after2 = s.string.maxLength(max) // Error! `RangeError: MinLength are greater than MaxLength. MinLength: undefined. MaxLength: ${number}`
0
из-за того, что там очень много работы с типами, то мы ожидаем именно числа как константы(конкретные числа). Если привести тип как число(as number
) - то будет ошибка валидации. Пока не нашел решения как это побороть.
Наверное пример не самый удачный подобрал.
Имелось ввиду что если кастить к числу, то поплывет валидация. Несмотря на то, что числа будут правильны.
const after2 = s.string.minLength(3).maxLength(5 as number) // RangeError: MinLength = 3, maxLength = number
// ^ inline cast to number
0
Понял, нужны литералы, советую глянуть эту тему, я когда мучился с литералами в качестве дженериков, спасся этим.
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#const-type-parameters
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ajv-ts версии 0.7 и щепотка typescript