背景

订单接口不仅要求 quantity 是数字,还要求它是正整数并受业务上限约束。Schema 把输入约束转成真正执行的代码。

核心判断

  1. 在 transport 层验证 unknown,再使用 z.infer 推导领域输入。
  2. 校验失败返回字段级、可理解的错误,不输出内部堆栈。
  3. 转换、默认值和未知字段处理明确记录。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

const CreateOrder = z.object({ sku: z.string().min(1), quantity: z.number().int().positive() }); const input = CreateOrder.parse(req.body);

边界与误区

示例只验证结构,不能验证 SKU 存在、库存充足或用户有权限。同步 schema 校验与数据库事务中的业务规则应分别负责。

验证方式

覆盖负数、小数、空 SKU、巨大 quantity 和未知字段,确认错误码稳定;合法输入仍要经过授权与业务约束测试。

小结

在外部边界解析并返回推断类型,领域函数只接收已经验证的数据。