Основы схем Zod
Определяйте схемы для примитивов, объектов и массивов
«Основы схем Zod» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Зачем нужна проверка во время выполнения
Типы TypeScript исчезают во время выполнения. Данные из API, форм и файлов не имеют типов на границе системы. Zod проверяет эти данные во время выполнения и одновременно предоставляет типы.
import { z } from "zod";
// Types check at compile time; Zod checks values at runtime.Импорт Zod
Импортируйте пространство имён z из пакета zod. Все средства построения schema находятся в z.
import { z } from "zod";
const nameSchema = z.string();
// nameSchema validates that a value is a string.Примитивные schema
Zod предоставляет средства построения для примитивов: z.string(), z.number() и z.boolean() проверяют каждый свой вид значения.
import { z } from "zod";
const name = z.string();
const age = z.number();
const active = z.boolean();
// Use .parse(value) to validate at runtime.Проверка значения
Вызовите .parse у schema, чтобы выполнить проверку. При корректном значении он возвращает это значение, а при некорректном — выдаёт исключение.
import { z } from "zod";
const schema = z.string();
const result = schema.parse("hello"); // "hello"
const broken = schema.parse(123); // throws ZodErrorОбъектные schema
z.object описывает структуру объекта, сопоставляя каждому ключу schema для его значения.
import { z } from "zod";
const userSchema = z.object({
name: z.string(),
age: z.number()
});
// userSchema.parse({ name: "Ada", age: 36 }) succeeds.Schema массивов
z.array проверяет, что значение является массивом, все элементы которого соответствуют заданной schema.
import { z } from "zod";
const tags = z.array(z.string());
// tags.parse(["a", "b"]) succeeds; tags.parse([1]) throws.Вложенные schema
Schema можно составлять из других schema. Объект может содержать массивы и другие объекты, отражая структуру реальных данных.
import { z } from "zod";
const post = z.object({
title: z.string(),
tags: z.array(z.string()),
author: z.object({ name: z.string() })
});
// Validates nested structure in one call.Boolean и number вместе
Объединяйте несколько типов полей в одной объектной schema, чтобы описывать реалистичные записи.
import { z } from "zod";
const product = z.object({
name: z.string(),
price: z.number(),
inStock: z.boolean()
});
// product.parse({ name: "Pen", price: 2, inStock: true });Schema — это значения
Schema Zod — обычное значение JavaScript, которое можно сохранять, передавать и повторно использовать, в отличие от типа TypeScript, существующего только во время компиляции.
import { z } from "zod";
const emailSchema = z.string();
function check(s: typeof emailSchema, v: unknown) {
return s.parse(v);
}
// You can pass schemas as arguments.Проверка неизвестных входных данных
Zod отлично подходит для данных типа unknown, например разобранной полезной нагрузки JSON, поскольку безопасно проверяет и уточняет тип значения.
import { z } from "zod";
const schema = z.object({ id: z.number() });
const raw: unknown = JSON.parse("{ \"id\": 1 }");
const data = schema.parse(raw); // data.id is numberОсновные строительные блоки курса
С помощью z.object, z.string, z.number, z.array и z.boolean можно описать большинство данных. Далее Вы выведете типы TypeScript из этих schema.
import { z } from "zod";
const schema = z.object({
name: z.string(),
scores: z.array(z.number())
});
// One schema, ready to validate and to infer a type from.Быстрая проверка: основы Zod
Проверьте, насколько хорошо Вы понимаете основы schema Zod.
Повторение: основы schema Zod
Вы научились импортировать z, создавать schema с помощью z.object, z.string, z.number, z.array и z.boolean, а затем проверять значения во время выполнения с помощью .parse.
import { z } from "zod";
const userSchema = z.object({ name: z.string(), age: z.number() });
// userSchema.parse({ name: "Ada", age: 36 });Часто задаваемые вопросы
Урок «Основы схем Zod» бесплатный?
Да — полный текст урока «Основы схем Zod» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы схем Zod»?
Определяйте схемы для примитивов, объектов и массивов Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Основы схем Zod»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.