247 - 《Zod 笔记》
发布于 2023年1月16日
免责声明:看完这篇文章后,你可能不想再使用任何其他的校验库了!
有人称 Zod 为「继 TypeScript 之后最伟大的库」(忘记来源了)。同时最近好多文章都提到这个库,于是今天翻了下文档和相关文章。
Zod 是啥?
Zod 的官方定义是「TypeScript-first schema validation with static type inference」,翻译过来是「以静态类型推理为基础的 TypeScript 优先的 Schema 校验库」。他只有 8kb(minified + zipped)。
简单示例,
// 定义 schema
const schema = z.string();
// 生成类型
type ISchema = z.infer<typeof schema>;
// 校验
schema.parse('abc');
为啥需要 Zod?Zod 可以用来解什么问题?
从前面的定义看,Zod 同时包含两个功能,1)静态类型,2)Schema 校验。这是之前的大部分方案所不具备的,比如 Joi、Ajv 等,他们只有 schema 校验功能,但如果你需要类型,则需要额外定义一份 TypeScript 类型,这会有大量重复。
比如 Umi 目前的配置校验用的 Joi,同时为了让用户写配置时能有类型校验,是通过 joi2types 这个库把 Joi 定义的 schema 解析成静