运行时校验库选型:Zod、Valibot 、ArkType、TypeBox 等
一提运行时校验,很多人先想到的就是 zod。这不奇怪,它现在差不多已经成了 TypeScript 项目的默认答案。
但默认选项不等于唯一选项。
但默认答案不等于唯一答案。
项目一旦开始碰到下面这些事,就该把视野放宽一点:
- 前端包体积是不是太大
- schema 能不能直接接
JSON Schema/OpenAPI - 语法能不能更接近 TypeScript 本身
- 表单、接口、环境变量、AI 输出到底该用哪种风格统一
这时候,把几类常见方案放在一起看,通常比继续凭感觉选更省事。
这一篇不打算把所有库都扫一遍,只聊今天还值得和 zod 摆在一张桌子上比较的几条路线。
先给个能直接拿走的版本
如果你现在就想定个大方向,可以先看这几句:
1. 大多数普通 TypeScript 项目
先用 zod,多数时候都不会错。
原因很简单:
- 心智成本低
- 社区例子多
- 表单、AI、服务端入口、环境变量这些场景都能覆盖
- 生态配套最稳
2. 前端更在意包体积
优先看 Valibot。
它和 zod 解决的是同一类问题,只是更强调模块化和体积。
3. 想要更贴近 TypeScript 语法
优先看 ArkType。
它最抓人的地方不是功能堆得多,而是写 schema 时真的更像在写类型。这点和 zod 的区别很明显。
4. 后端强依赖 JSON Schema / OpenAPI / 跨语言契约
优先看 TypeBox + Ajv。
这一套更偏标准协议,不是前端熟悉的那种链式 API 手感。
5. 老项目表单体系已经很多
可能还会继续留在 Yup。
不是因为它更先进,而是很多时候迁移回报不够高。