GGitHub 趋势观察站
每日 07:00 更新
← 返回今日榜单

colinhacks /

zod

提供静态类型推断的 TypeScript 数据结构验证库。

访问 GitHub 仓库 ↗
最近上榜 · 2026-08-31#16

当日排名

+31当日新增 Star43,660总 Star

Zod:用一份 Schema 同时验证数据并推导 TypeScript 类型

一分钟看懂

Zod 是一个以 TypeScript 为中心的数据 Schema 验证库。开发者用代码描述字符串、数字、对象、数组、联合类型等结构,Zod 在运行时检查外部数据是否符合要求,同时让 TypeScript 从 Schema 自动推导静态类型。

它解决了一个常见缺口:TypeScript 类型在编译后会消失,接口响应、表单、环境变量和 JSON 仍可能在运行时传入错误数据。Zod 把数据边界的假设变成真正执行的验证。

你可以用它做什么

验证接口输入和响应

为请求参数、JSON Body 或第三方 API 响应定义 Schema,使用 parse 获得经过验证的数据,或用 safeParse 显式处理成功与错误。这样业务代码不必反复写类型判断。

校验表单与配置

字符串长度、邮箱格式、枚举、默认值和字段间逻辑可以集中表达,错误信息再映射到表单。启动应用时验证环境变量,也能更早发现部署配置缺失。

复用类型定义

从 Schema 推导类型,避免单独维护 TypeScript interface 和验证规则导致两者漂移。对象可通过选择、忽略、扩展和合并构造出创建、更新与返回数据的不同版本。

转换和规范化数据

验证过程中可以预处理、转换或设置默认值,例如把输入字符串变成日期。转换应保持可预测,复杂业务逻辑仍应放在服务层而不是全部塞进 Schema。

主要能力

  • 支持基础类型、对象、数组、元组、枚举、联合与递归结构。
  • 同步和异步解析,提供可结构化展示的错误信息。
  • 从 Schema 推导 TypeScript 输入与输出类型。
  • 支持 refine、transform、默认值和预处理。
  • 可生成或对接 JSON Schema 等生态格式。
  • 体积较小,无外部运行时依赖,适合前后端共享。

适合哪些人

它适合 TypeScript 前端、Node.js API、全栈框架和共享类型库。若项目只有纯 JavaScript,也能使用验证能力,但类型推导优势不明显。

怎么开始使用

从真正不可信的数据边界开始:表单提交、API 请求、环境变量和外部响应。先定义小 Schema 并统一错误处理,再逐步抽取复用。不要在系统内部每一步重复解析已经验证的数据。

使用前需要知道

Schema 只能验证你写出的规则。一个字段是合法 URL,不代表地址安全;一个数字在范围内,也不代表业务状态允许操作。授权、数据库约束和业务一致性仍需其他层处理。

大型深层 Schema、复杂联合和大量转换会增加类型检查或运行开销。升级主要版本前应查看迁移说明并运行完整测试,尤其关注错误格式、默认值和类型推导变化。

官方资料