Zod 4.5引入Schema编译,验证提速最高9倍
TypeScript Schema 验证库 Zod 于2026年8月28日发布4.5版本,核心变化是引入运行时 Schema 编译;9月9日发布的4.6版本继续扩展功能,并修复了递归 Schema 的内存回归问题。编译和内存优化主要来自4.5,因此升级到4.6时也应关注相关修复。
4.5新增 z.compile(),可把任意 Schema 转换为预编译验证器,在保持原有语义和使用方式不变的情况下,将相同数据的解析速度提升约3至9倍。编译过程在进程内延迟执行,不需要构建工具插件或额外代码生成;也可以在入口文件导入 zod/compile,或使用 node --import zod/compile app.js,让所有 Schema 在首次解析时自动编译。通过缓存绑定方法,空的 z.string() 堆内存占用从约7.5KB降至784字节,约为原来的九分之一;safeParse() 失败时不再捕获堆栈,拒绝无效输入的成本降低约7.5倍。
4.5还恢复了 z.deepPartial(),新增 .exactPartial()、z.creditCard()、z.input()/z.output()、递归 Schema 循环数据支持及8种错误信息语言区域。4.6新增 .validate(),只返回布尔值,不构建解析结果或 ZodError,并可在发现首个错误后停止;在编译启用且输入无效时,官方称其性能最高可达 .safeParse().success 的35倍,但它不能替代需要转换结果或详细错误信息的解析方法。4.6同时支持类实例属性验证、z.fromJSONSchema()新增6个验证关键字和 z.iban()。
对于内容安全策略禁止使用 new Function 的环境,可通过 z.withParser() 安装外部生成的解析器,但该接口不会自行生成解析器。4.6还修复了4.5中的递归 Schema 内存问题:此前递归结构可能持续持有已解析数据,最终导致内存耗尽。发布时的 Moltar parseSafe 基准显示,编译后的 Zod 每秒约4750万次操作,略高于 Typia 的4530万次,明显领先 Valibot 的180万次和 ArkType 的15.2万次;不过在纯布尔断言测试中,Typia与ArkType仍领先,具体结果取决于工作负载,且这些数据未覆盖4.6的 .validate() 最新对比。
Zod由Colin McDonnell创建,是JavaScript生态中广泛采用的开源验证工具,用于定义 Schema、推断静态类型并解析不可信数据,已获得 tRPC、React Hook Form及多种后端框架的一等支持,每周下载量超过3000万次。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文