← 中文资源

简体中文版本

带 transform 的 Zod 模式解析

定义带 transform 的 Zod 模式,用于输入归一化、校验和输出类型推断。

阅读英文原文

示例说明

定义带 transform 的 Zod 模式,用于输入归一化、校验和输出类型推断。本示例属于表单校验场景,提供可直接复制使用的typescript代码片段,附带边界条件与使用注意事项。

技术要点

  • transform 归一化如 email 转小写
  • strict 拒绝额外属性防注入
  • infer 从 schema 推断输出类型

代码解读

上述代码实现了带 transform 的 Zod 模式解析的核心逻辑。定义带 transform 的 Zod 模式,用于输入归一化、校验和输出类型推断。代码中包含输入校验、核心算法和结果返回三个部分。关键在于正确处理边界情况,例如空输入、非法参数和并发场景。transform 归一化如 email 转小写,strict 拒绝额外属性防注入。这些设计确保代码在生产环境中的健壮性。

使用建议

在实际项目中使用本示例时,建议先理解带 transform 的 Zod 模式解析的适用场景与限制条件。infer 从 schema 推断输出类型。根据具体业务需求调整参数配置,并编写单元测试覆盖正常路径与边界情况。本代码片段可直接集成到现有项目中,或作为参考实现自行扩展。

代码示例

import{z}from'zod';export const userSchema=z.object({email:z.string().email().transform(s=>s.toLowerCase()),age:z.number().int().min(18).max(120),tags:z.array(z.string()).default([]),metadata:z.record(z.string(),z.unknown()).optional()}).strict();export type User=z.infer<typeof userSchema>;export function parseUser(input:unknown):User{return userSchema.parse(input);}export function safeParseUser(input:unknown){const result=userSchema.safeParse(input);return result.success?{valid:true,data:result.data}:{valid:false,errors:result.error.issues};}