Comments 7
Классная библиотека! Вижу тенденцию перехода именно на Zod сейчас везде, хотя раньше более популярна была Yup и другие в таком же стиле.
Так же к статье можно добавить, что Zod прекрасно работает как на фронте так и на бэке в Next.js например, и прекрасно интегрируется с ReactHookForm. Комбинация всех составляющих позволяет фигачить любые формы с проверками входных данных просто как нефиг делать.
Даю рецепт:
1. Берешь в Next.js клиентском компоненте делаешь форму на React Hook Form.
2. Делаешь схему Zod и вывод типа из нее.
3. Подключаешь в RHF Zod в качестве валидатора.
4. Отправляешь форму через server action на сервер одной строчкой кода.
5. На бэке, используя ту же схему Zod, проверяешь данные формы и сохраняешь в базу.
электронная почта — формат something@domain.zone;
пароль — не менее 8 символов, содержит минимум одну цифру, одну заглавную и одну строчную букву
Уж сколько раз твердили миру...
interface User {
name: string;
age: number;
email: Email;
password: Password;
}
Подскажите, а каким образом вы из формы (input) получили вот такой объект с указанными типами?
<input type="number"> // вам он тут вернул тип Number в input.value?
Печаль в том, что все вышесказанное относится только к новым проектам. Если брать практически любой существующий, то окажется, что в базе уже лежит N тысяч невалидных данных, которые всё-таки нужно показывать пользователю (в надежде, что он их распознает). И тогда все эти истории с типизированными классами идут лесом... а жаль.
Судя по бенчмаркам zod самый тормозной.
Решаем задачу: как сохранить нервные клетки пользователей с помощью валидации поля ввода