0Pricing
TypeScript Academy · 课时

Zod 模式基础

为原始值、对象和数组定义模式。

Zod 模式基础 是 CoddyKit 上的免费 TypeScript Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 TypeScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 TypeScript Academy 课程共包含 4 节课。

为什么需要运行时验证

TypeScript 类型在运行时会消失。来自 API、表单和文件的数据在边界处没有类型。Zod 可以在运行时验证这些数据,同时也为您提供类型。

import { z } from "zod";
// Types check at compile time; Zod checks values at runtime.

导入 Zod

从 zod 包中引入 z 命名空间。每个模式构建器都位于 z 上。

import { z } from "zod";
const nameSchema = z.string();
// nameSchema validates that a value is a string.

基本类型模式

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 即可进行验证。值有效时,它会返回该值;值无效时,它会抛出错误。

import { z } from "zod";
const schema = z.string();
const result = schema.parse("hello"); // "hello"
const broken = schema.parse(123); // throws ZodError

对象模式

z.object 用于描述对象的结构,将每个键映射到其值所使用的模式。

import { z } from "zod";
const userSchema = z.object({
  name: z.string(),
  age: z.number()
});
// userSchema.parse({ name: "Ada", age: 36 }) succeeds.

数组模式

z.array 会验证某个值是否为数组,并确保其中的所有元素都符合给定模式。

import { z } from "zod";
const tags = z.array(z.string());
// tags.parse(["a", "b"]) succeeds; tags.parse([1]) throws.

嵌套模式

模式可以组合使用。对象可以包含数组和其他对象,从而映射真实数据的结构。

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.

同时使用布尔值和数字

在一个对象模式中组合多种字段类型,即可描述符合实际情况的记录。

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 });

模式也是值

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 类型。

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 基础

测试您对 Zod 模式基础知识的理解。

回顾:Zod 模式基础

您学会了导入 z,使用 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 模式基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 4 节课。

「Zod 模式基础」这节课中我会学到什么?

为原始值、对象和数组定义模式。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 TypeScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Zod 模式基础」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 TypeScript Academy 课中编写并运行代码吗?

能。每节 TypeScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Zod 模式基础
  2. 从模式推断类型
  3. parse 与 safeParse
  4. 组合与细化模式
← 返回 TypeScript Academy