Zod 表单校验
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/ysd20265694,将 ZodSchema 校验技能添加到 AI 助手中。
技能介绍
这个技能解决什么问题
客户/线索表单的校验规则总是散落各处:前端一套手写 if,后端再来一套,字段约束靠口口相传。改一条手机号规则要同步两处,嵌套对象的校验写出来像意大利面,出问题时错误信息还常常是框架默认的英文堆栈,用户根本看不懂。
这个技能用 Zod 把「一份 Schema,类型推断 + 运行时校验」落地:前后端共用同一套字段约束,表单提交前用 safeParse 做运行时校验,失败时把错误精确映射回对应控件,而不是抛未捕获异常导致白屏。
核心能力与工作步骤
- 定义 Schema 并用
z.infer反推类型:类型与校验规则来自同一处定义,天然一致,不用维护两份 - 提交前
parseCustomer安全解析:校验失败时拿到结构化的错误结果,按字段写回控件错误,流程不中断 - 可选的批量预检:用
z.array(customerSchema)对批量导入数据做整体校验,再决定是否入库 - 三条路径自测:缺字段、手机号非法、合法对象,覆盖最常见的分支
错误文案统一走中文,通过 errorMap 或字段级 message 配置,保证用户可读。手机号等格式只做轻量校验,深度的运营商识别交给其它 Skill。
适用边界与注意事项
- 不要把 Zod 当权限/鉴权层:Schema 只描述数据形状与格式,不判断「能不能做」,那是后端鉴权的职责
- 不要在 Schema 里发网络请求:校验逻辑保持纯函数,否则既不可缓存也不可单测
- Yup 二选一:如果项目里已有 Yup,明确选一个作主方案,不要双栈混用同一字段,否则约束冲突时排查成本很高
- 标注原创:实现要点需标注 小四原创,灵感来自能力工具箱 zod(pkg: zod)
使用场景
- 客户提交线索表单前,用统一规则校验姓名、手机号等必填字段,并把错误精确写回对应输入框。
- 前后端共用客户数据模型时,用同一套Zod Schema约束字段类型、长度与格式,避免两处定义漂移。
- 批量导入客户数据前,用数组Schema预检整批数据的格式合法性,拦截脏数据避免入库后才报错。
- 团队同时使用Zod与Yup做表单校验时,明确以Zod为主方案,避免同一字段出现两套冲突的约束规则。
适合人员
- 前端开发工程师,典型诉求是避免表单校验逻辑与TypeScript类型定义不同步导致的运行时错误。
- 后端开发工程师,典型诉求是统一接口入参的校验规则,减少手写if分支带来的维护成本。
- 全栈开发者,典型诉求是用一份Schema同时满足前后端的数据校验需求,不必重复编写校验逻辑。
- 使用AI辅助开发的工程师,典型诉求是让Agent生成的表单校验代码统一遵循Zod与safeParse的团队约定。