背景
给 JSON.parse 的结果加 User 类型,不会自动检查字段。类型系统接收到不可信数据之前,需要一道真正执行的校验。
核心判断
- HTTP、消息与本地存储统一从 unknown 开始。
- 在边界执行 schema 校验,成功后才交给领域层。
- 转换、默认值与未知字段策略显式声明,不默默修改业务含义。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
const User = z.object({ id: z.number().int(), name: z.string().min(1) });
const user = User.parse(JSON.parse(body));
边界与误区
parse 会抛出异常;接口需要可控错误返回时可以用 safeParse。示例依赖 zod,并且 JSON 语法错误与 schema 错误应分别分类。
验证方式
覆盖缺字段、错误类型、空字符串、超范围数字和畸形 JSON,确认输入错误返回客户端错误,而不是落入通用 500。
小结
HTTP、消息和存储数据进入类型系统前都不可信,边界必须执行 schema 校验。