使用 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 反馈 — 无需本地设置。
此课程中的所有课时
- Fetch API 类型;Response.json() 泛型
- 使用 zod 进行运行时校验(入门)