Преобразование и уточнение данных Zod
Выйдите за пределы базовой проверки данных: преобразуйте разобранные значения и добавляйте собственные правила уточнения с помощью Zod.
«Преобразование и уточнение данных Zod» — бесплатный урок tRPC End-to-End Type Safe APIs на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения tRPC End-to-End Type Safe APIs, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс tRPC End-to-End Type Safe APIs содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Beyond Pass/Fail
Zod does more than accept or reject data. It can transform valid input into a cleaner shape and apply custom rules that built-in validators cannot express.
The transform Method
.transform() changes a value after it passes validation, producing a new output type.
const trimmed = z.string().transform((s) => s.trim());
trimmed.parse(" hi "); // "hi"Coercing Types
Zod can coerce inputs, useful for query strings that arrive as text but should be numbers.
const page = z.coerce.number().int().positive();
page.parse("5"); // 5 as a numberDefault Values
Provide a fallback when a field is missing.
const schema = z.object({
limit: z.number().default(20),
});
schema.parse({}); // { limit: 20 }Custom Refinements
.refine() adds a custom boolean check with a message when it fails.
const password = z.string().refine(
(val) => val.length >= 8,
{ message: "Too short" }
);Cross-Field Validation
Refine an object to compare two fields, like confirming a password.
const form = z.object({
pw: z.string(),
confirm: z.string(),
}).refine((d) => d.pw === d.confirm, {
message: "Passwords must match",
path: ["confirm"],
});superRefine for Multiple Errors
.superRefine() lets you push several issues in one pass for richer validation.
const s = z.string().superRefine((val, ctx) => {
if (!/[A-Z]/.test(val)) ctx.addIssue({ code: "custom", message: "Need uppercase" });
if (!/[0-9]/.test(val)) ctx.addIssue({ code: "custom", message: "Need digit" });
});Chaining Transforms
Validation and transformation chain in order.
const slug = z.string()
.min(1)
.transform((s) => s.toLowerCase().replace(/\s+/g, "-"));
slug.parse("Hello World"); // "hello-world"Input vs Output Types
After a transform, the input type and output type differ. Use z.input and z.output to read each.
type In = z.input<typeof page>; // string | number
type Out = z.output<typeof page>; // numberSafe Parsing
Use safeParse to get a result object instead of throwing, ideal for handling errors gracefully.
const r = password.safeParse("short");
if (!r.success) console.log(r.error.issues);Pipe for Validate-then-Transform
Use .pipe() to first coerce or transform a value and then run further validation on the result.
const id = z.string().transform(Number).pipe(z.number().int());Quick Check
Test your Zod knowledge.
Recap
You leveled up your Zod schemas:
- transform and coerce reshape valid data
- refine / superRefine add custom and cross-field rules
- safeParse handles errors without throwing
These tools turn Zod into a powerful data shaping and validation layer.
Часто задаваемые вопросы
Урок «Преобразование и уточнение данных Zod» бесплатный?
Да — полный текст урока «Преобразование и уточнение данных Zod» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс tRPC End-to-End Type Safe APIs, подпишись на CoddyKit PRO. Курс tRPC End-to-End Type Safe APIs содержит 4 уроков всего.
Чему я научусь в уроке «Преобразование и уточнение данных Zod»?
Выйдите за пределы базовой проверки данных: преобразуйте разобранные значения и добавляйте собственные правила уточнения с помощью Zod. Ты практикуешь tRPC End-to-End Type Safe APIs с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать tRPC End-to-End Type Safe APIs?
Предыдущий опыт не требуется. tRPC End-to-End Type Safe APIs на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Преобразование и уточнение данных Zod»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке tRPC End-to-End Type Safe APIs?
Да. Каждый урок tRPC End-to-End Type Safe APIs включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Введение в схемы Zod
- Определение сложных схем Zod
- Интеграция Zod в процедуры tRPC
- Преобразование и уточнение данных Zod