关于 zod
zod 是面向 TypeScript 开发者的 Zod 模式验证最佳实践指南,包含按影响优先级组织的规则。内容涵盖模式设计、解析、类型推断、错误处理及性能。
主要功能
- 01按优先级整理 43 条规则
- 02涵盖模式定义与解析验证
- 03指导类型推断和错误处理
- 04提供对象组合及转换建议
- 05包含性能与包体积优化
适用场景
- 01编写或审查 Zod 模式
- 02选择 parse() 或 safeParse()
- 03处理校验错误并反馈给用户
- 04优化验证性能和包体积
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill zod安装后在 Claude Code 中输入/zod确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdcompose-intersection.mdcompose-lazy-recursive.mdcompose-pipe.mdcompose-preprocess.mdcompose-shared-schemas.mderror-avoid-throwing-in-refine.mderror-custom-messages.mderror-i18n.mderror-path-for-nested.mderror-use-flatten.mdobject-discriminated-unions.mdobject-extend-for-composition.mdobject-optional-vs-nullable.mdobject-partial-for-updates.mdobject-pick-omit.mdobject-strict-vs-strip.mdparse-async-for-async-refinements.mdparse-avoid-double-validation.mdparse-handle-all-issues.mdparse-never-trust-json.mdparse-use-safeparse.mdparse-validate-early.mdperf-arrays.mdperf-avoid-dynamic-creation.mdperf-cache-schemas.md详细介绍
Zod 最佳实践
面向 TypeScript 应用的 Zod 综合模式验证指南。包含 8 个类别中的 43 条规则,并按影响程度排序,以指导自动化重构和代码生成。
适用场景
在以下情况下,请参考这些指南:
- 编写新的 Zod 模式
- 在 parse() 和 safeParse() 之间进行选择
- 使用 z.infer 实现类型推断
- 处理验证错误并向用户提供反馈
- 组合复杂的对象模式
- 使用细化和转换
- 优化打包体积和验证性能
- 审查 Zod 代码的最佳实践
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 模式定义 | 严重 | schema- |
| 2 | 解析与验证 | 严重 | parse- |
| 3 | 类型推断 | 高 | type- |
| 4 | 错误处理 | 高 | error- |
| 5 | 对象模式 | 中高 | object- |
| 6 | 模式组合 | 中 | compose- |
| 7 | 细化与转换 | 中 | refine- |
| 8 | 性能与打包 | 中低 | perf- |
快速参考
1. 模式定义(严重)
schema-use-primitives-correctly- 为每种类型使用正确的基本类型模式schema-use-unknown-not-any- 使用 z.unknown() 而非 z.any(),以确保类型安全schema-avoid-optional-abuse- 避免过度使用可选字段schema-string-validations- 在定义模式时应用字符串验证schema-use-enums- 对固定字符串值使用枚举schema-coercion-for-form-data- 对表单和查询数据使用强制转换
2. 解析与验证(严重)
parse-use-safeparse- 对用户输入使用 safeParse()parse-async-for-async-refinements- 对异步细化使用 parseAsyncparse-handle-all-issues- 处理所有验证问题,而不只是第一个parse-validate-early- 在系统边界处进行验证parse-avoid-double-validation- 避免对同一数据重复验证parse-never-trust-json- 切勿信任 JSON.parse 的输出
3. 类型推断(高)
type-use-z-infer- 使用 z.infer,而非手动定义类型type-input-vs-output- 对转换区分 z.input 和 z.infertype-export-schemas-and-types- 同时导出模式和推断出的类型type-branded-types- 使用品牌类型确保领域安全type-enable-strict-mode- 启用 TypeScript 严格模式
4. 错误处理(高)
error-custom-messages- 提供自定义错误消息error-use-flatten- 使用 flatten() 显示表单错误error-path-for-nested- 使用 issue.path 定位嵌套错误error-i18n- 实现国际化错误消息error-avoid-throwing-in-refine- 在 refine 中返回 false,而非抛出异常
5. 对象模式(中高)
object-strict-vs-strip- 为未知键选择 strict() 或 strip()object-partial-for-updates- 对更新模式使用 partial()object-pick-omit- 使用 pick() 和 omit() 创建模式变体object-extend-for-composition- 使用 extend() 添加字段object-optional-vs-nullable- 区分 optional() 和 nullable()object-discriminated-unions- 使用可辨识联合进行类型收窄
6. 模式组合(中)
compose-shared-schemas- 将共享模式提取到可复用模块中compose-intersection- 使用 intersection() 组合类型compose-lazy-recursive- 对递归模式使用 z.lazy()compose-preprocess- 使用 preprocess() 规范化数据compose-pipe- 使用 pipe() 进行多阶段验证
7. 细化与转换(中)
refine-vs-superrefine- 正确选择 refine() 或 superRefine()refine-transform-coerce- 区分 transform()、refine() 和 coerce()refine-add-path- 为细化错误添加 pathrefine-defaults- 对带默认值的可选字段使用 default()refine-catch- 使用 catch() 实现容错解析
8. 性能与包体积(低-中)
perf-cache-schemas- 缓存 schema 实例perf-zod-mini- 在对包体积敏感的应用中使用 Zod Miniperf-avoid-dynamic-creation- 避免在热点路径中动态创建 schemaperf-lazy-loading- 延迟加载大型 schemaperf-arrays- 优化大型数组的验证
使用方法
阅读各个参考文件,了解详细说明和代码示例:
完整编译文档
如需查看包含所有展开规则的完整指南:AGENTS.md
相关技能
- 如需了解 React Hook Form 集成,请参阅
react-hook-form技能 - 如需了解 API 客户端生成,请参阅
orval技能
来源
评论
支持 Markdown