Как стать автором
Обновить

Комментарии 3

Хорошая работа, с ajv не работал, но как альтернатива валидации на основе рефлексии выглядит неплохо.

Вот тут правда немного не понял:

const max = 1 as number;
const after2 = s.string.maxLength(max) // Error! `RangeError: MinLength are greater than MaxLength. MinLength: undefined. MaxLength: ${number}`

из-за того, что там очень много работы с типами, то мы ожидаем именно числа как константы(конкретные числа). Если привести тип как число(as number) - то будет ошибка валидации. Пока не нашел решения как это побороть.

Наверное пример не самый удачный подобрал.
Имелось ввиду что если кастить к числу, то поплывет валидация. Несмотря на то, что числа будут правильны.

const after2 = s.string.minLength(3).maxLength(5 as number) // RangeError: MinLength = 3, maxLength = number
//                                               ^ inline cast to number

Понял, нужны литералы, советую глянуть эту тему, я когда мучился с литералами в качестве дженериков, спасся этим.

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#const-type-parameters

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории