TypeScript 运行时边界:类型声明不能替代输入校验

背景 给 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 校验。

2026年9月20日 · 1 分钟 · BvBeJ