
Zod — это TypeScript библиотека для валидации и создания схем данных, позволяющая определять строгие типы на этапе разработки. Она значительно упрощает управление типами и обеспечивает безопасность данных в приложениях. В отличие от других решений для валидации данных, Zod написан на TypeScript и позволяет использовать строгую типизацию как на этапе компиляции, так и на этапе выполнения.
Для простых структур можно задать валидацию буквально в одной строке:
const userSchema = z.object({
name: z.string(),
age: z.number(),
email: z.string().email()
});Одним из ключевых преимуществ является автоматическая генерация TypeScript типов из схем Zod. Это избавляет от необходимости дублировать логику валидации и типизацию данных:
const user = userSchema.parse({
name: "Aleksandr",
age: 31,
email: "aleksandr@google.com"
});
type User = z.infer<typeof userSchema>; // { name: string, age: number, email: string }Zod также поддерживает продвинутые методы валидации: асинхронную валидацию, пользовательские валидаторы и возможность задавать условия на основании других значений в объекте:
const passwordSchema = z.string().min(8).max(20);
const customSchema = z.object({
password: passwordSchema,
confirmPassword: z.string().refine(
(value, context) => value === context.parent.password,
{ message: "Пароли должны совпадать" }
)
});Композируемость. В Zod схемы можно легко комбинировать и расширять:
const baseUserSchema = z.object({
name: z.string(),
age: z.number().min(18),
});
const adminSchema = baseUserSchema.extend({
isAdmin: z.boolean(),
});Теперь, когда мы вспомнили/познакомились с основами работы с Zod, можно перейти к неочевидным и полезным вариантам использования.
