用途:为 TypeScript 项目提供类型安全的模式(schema)校验,涵盖模式定义、校验、解析、类型推断、强制转换、错误格式化、元数据与 JSON Schema 转换。表单集成请改用 tanstack-form 技能。
主要能力:支持 z.object、z.string、z.number 等基础类型;v4 新增顶层字符串格式 z.email()、z.url()、z.uuid(),ISO 日期 z.iso.date()、z.iso.datetime(),定宽数字 z.int()、z.float32()、z.int32(),模板字面量 z.templateLiteral();支持枚举、字面量、联合、可辨识联合、数组、元组、record、map、optional、nullable、default、catch、prefault、coerce、stringbool、transform、overwrite、pipe、refine、superRefine;解析用 parse 与 safeParse,类型用 z.infer、z.input、z.output;v4 还提供 z.file()、z.toJSONSchema()、.meta()、.describe()、z.prettifyError()、z.treeifyError()、z.registry()、z.globalRegistry、z.config(z.locales.en()) 及 getter 递归类型。
使用方式:安装包 zod(也可用 zod/mini 减小体积),按需定义 schema 后调用 parse 或 safeParse 校验并提取数据。
常见错误与修正:用 z.email() 替代 z.string().email(),z.url() 替代 z.string().url();解析时用 safeParse 处理错误;字段可能为 undefined 时加 .optional();未知数据用 z.unknown() 而非 z.any();同类型变更用 .overwrite() 而非 .transform();字符串默认允许空串,需加 .min(1);v4 中 z.number() 拒绝 Infinity,.safe() 等同 .int();递归类型用 getter 语法替代 z.lazy();用统一 error 函数替代 required_error/invalid_type_error 与 errorMap;.refine 的函数作第二参数重载已移除,改用 .superRefine();z.record 需两个参数;ZodError 的 .format()/.flatten() 已弃用,改用 z.treeifyError(err);.default() 使用输出类型,输入类型默认值用 .prefault()。
限制:资料未提供具体版本号、安装命令细节、性能数据、收费信息或平台支持范围,暂未提供。