0Pricing
TypeScript Academy · 课时

使用 zod 进行运行时校验(入门)

使用 zod 模式在运行时校验 JSON 响应,让安全性不只依赖编译时类型。

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

简介

目标:使用 zod 增加运行时安全性。仅有编译时类型并不足够,因此需要使用模式验证实时数据。

安装 zod

安装 zod,这是一个广受欢迎的 TS/JS 运行时模式验证库。

npm install zod

模式定义

使用 z.object() 创建模式。使用 z.infer<typeof Schema> 从模式生成 TS 类型。

import { z } from "zod";

const UserSchema = z.object({
  id: z.number(),
  name: z.string()
});

type User = z.infer<typeof UserSchema>;

Schema.parse()

调用 Schema.parse() 验证数据。如果 JSON 与模式不匹配,就会抛出错误。

async function getUser() {
  const res = await fetch("/user.json");
  const raw = await res.json();
  const parsed = UserSchema.parse(raw);
  console.log(parsed.id, parsed.name);
}

safeParse

safeParse 返回一个包含 成功 和 错误 字段的对象。它比抛出异常更安全。

const result = UserSchema.safeParse(raw);
if (!result.success) {
  console.error(result.error);
} else {
  console.log(result.data);
}

嵌套模式

模式可以嵌套使用,例如数组、对象和可选字段等。

const PostSchema = z.object({
  id: z.number(),
  title: z.string(),
  tags: z.array(z.string())
});

const raw = { id: 1, title: "Hello", tags: ["ts", "zod"] };
const post = PostSchema.parse(raw);

验证检查

快速检查:解析 JSON 后,为什么还要使用 zod 进行验证?

回顾

回顾:zod 模式可以验证运行时 JSON。使用 parse 或 safeParse 确保数据安全。

常见问题解答

「使用 zod 进行运行时校验(入门)」课时是免费的吗?

是的 — 「使用 zod 进行运行时校验(入门)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 TypeScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 TypeScript Academy 课程共包含 2 节课。

「使用 zod 进行运行时校验(入门)」这节课中我会学到什么?

使用 zod 模式在运行时校验 JSON 响应,让安全性不只依赖编译时类型。 你通过在浏览器中直接运行的动手代码来练习 TypeScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 TypeScript Academy 需要有经验吗?

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

「使用 zod 进行运行时校验(入门)」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. Fetch API 类型;Response.json() 泛型
  2. 使用 zod 进行运行时校验(入门)
← 返回 TypeScript Academy