Zod. Основные преимущества и неочевидные кейсы использования

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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, можно перейти к неочевидным и полезным вариантам использования.

Источник: https://habr.com/ru/articles/855734/


Интересные статьи

Интересные статьи

Эксперты поделились, как можно заблокировать ИИ-поиск в Google, манипулируя параметрами URL-адресов. Метод заключается в использовании нового «сетевого» поискового фильтра, который Google сама запусти...
Это главы 36 раздела «HTTP API & REST» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работ...
Привет! На связи Данила Соловьев, руководитель направления PHP в AGIMA. Для проджект-менеджеров и джуниор-разработчиков я подготовил небольшой гайд по тому, как ускорять работу крупных проектов на Бит...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...