5. Валидация с Zod
Валидация входных данных — критически важная часть любого API. tRPC нативно интегрируется с Zod — мощной библиотекой для декларативной валидации и вывода TypeScript-типов.
Что такое Zod?
Заголовок раздела «Что такое Zod?»Zod — это TypeScript-first библиотека для валидации данных. Вы описываете схему данных, а Zod автоматически выводит TypeScript-тип из неё. Это означает: одна схема — и для валидации, и для типизации.
Метод .input()
Заголовок раздела «Метод .input()»Метод .input() принимает Zod-схему и делает две вещи: первое — валидирует входные данные при каждом запросе (если данные невалидны, tRPC автоматически вернёт ошибку BAD_REQUEST); второе — TypeScript автоматически типизирует input в обработчике процедуры.
Общие паттерны валидации
Заголовок раздела «Общие паттерны валидации»Наиболее часто используемые Zod-валидаторы: z.string(), z.number(), z.boolean(), z.object(), z.array(), z.enum(). Каждый из них поддерживает уточнения: .min(), .max(), .email(), .optional(), .default().
Сложные схемы
Заголовок раздела «Сложные схемы»Zod поддерживает вложенные объекты, массивы, объединения типов (z.union()) и пересечения (z.intersection()). Для создания опциональных полей используйте .optional(), для полей со значением по умолчанию — .default().
Вывод TypeScript-типа из схемы
Заголовок раздела «Вывод TypeScript-типа из схемы»Используйте z.infer<typeof schema> для получения TypeScript-типа из Zod-схемы. Это позволяет переиспользовать тип в других местах кода без дублирования.