用途:在 TypeScript 项目中系统性使用 Zod 做输入校验,适用于用户输入、API 请求、表单数据与数据转换等场景,确保校验正确、安全且风格统一。
主要能力:覆盖全部 Zod schema 类型(基础类型、数组/对象/map/set/record、union/intersection/可辨识联合、optional/nullable、品牌类型与递归 schema);错误处理(自定义消息、i18n、UI 格式化、safeParse、错误恢复);refine 自定义校验(链式、跨字段、条件、业务逻辑、文件上传);transform 转换(类型强制、清洗归一化、计算字段、预处理);异步校验(数据库唯一性、API 校验、并发与超时);z.infer 类型推断;Next.js API 路由、Server Actions、表单与文件上传集成;以及常用可复用 schema(邮箱、密码、电话、URL、UUID、日期、地址、信用卡、用户名、slug、颜色)。
使用方式:定义 schema 后用 parse()(出错抛异常)或 safeParse()(返回结果对象)解析;用 z.infer<typeof schema> 提取类型。示例:const userSchema = z.object({ email: z.string().email(), age: z.number().int().positive(), role: z.enum(['admin', 'user']) })。API 路由中读取 request.json() 后 safeParse,失败返回 400 与 result.error.format()。Server Actions 中将 FormData 字段传入 safeParse。
最佳实践:在边界处校验(API 路由、Server Actions、外部数据源);优先 safeParse;提供清晰错误消息;复用常用 schema;始终用 z.infer 推断类型;测试边界用例;为复杂 schema 加 JSDoc。
不适用:不需要校验的简单类型检查、运行时性能关键路径、已校验的可信内部数据,避免重复校验。
限制与合规:资料要求兼容 TypeScript strict 模式(禁用 any 与 @ts-ignore);校验逻辑需覆盖正常、边界、错误与自定义校验测试。文档参考 zod.dev 与 Next.js Server Actions 链接;Zod 版本 v4.1.12,最后更新 2025-11-23。收费、平台与效果等未提供。