示例说明
用 Zod 模式校验表单输入,使用 safeParse 收集类型化错误并自动类型收窄。本示例属于表单校验场景,提供可直接复制使用的javascript代码片段,附带边界条件与使用注意事项。
技术要点
- safeParse 返回成功或错误不抛异常
- 错误映射为带路径的消息列表
- 成功时 data 已按 schema 类型收窄
代码解读
上述代码实现了用 Zod safeParse 的模式校验的核心逻辑。用 Zod 模式校验表单输入,使用 safeParse 收集类型化错误并自动类型收窄。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。safeParse 返回成功或错误不抛异常,错误映射为带路径的消息列表。这些设计确保代码在生产环境中的健壮性。
使用建议
在实际项目中使用本示例时,建议先理解用 Zod safeParse 的模式校验的适用场景与限制条件。成功时 data 已按 schema 类型收窄。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。
代码示例
import{z}from'zod';const userSchema=z.object({email:z.string().email(),age:z.number().int().min(18).max(120),role:z.enum(['admin','user','guest'])});export function validateUser(input){const result=userSchema.safeParse(input);if(!result.success){return{success:false,errors:result.error.issues.map(i=>({path:i.path.join('.'),message:i.message}))};}return{success:true,data:result.data};}