用途:TypeScript 的类型在运行时会被擦除,该技能针对需要确认运行时数据是否与类型匹配的问题,建议用校验库从单一来源同时获得运行时校验与静态类型,确保类型符合真实数据。
主要能力:借助 io-ts、zod 或 runtypes 定义 schema;由 schema 推导 TypeScript 类型;对运行时数据(如 JSON)执行校验并得到带类型的结果。
使用时机:运行时校验数据;带类型安全地解析 JSON;类型需要运行时检查;使用 io-ts、zod 或 runtypes;构建校验 schema。
核心原则:使用 zod、io-ts 等校验库,从单一事实来源同时获得运行时校验与 TypeScript 类型。
Zod 示例要点:用 z.object 定义 UserSchema,包含 id、name、email、可选 age;用 z.infer 从 schema 得到 User 类型;用 safeParse 对未知数据做校验,成功时 result.data 具有 User 类型,失败时读取 result.error。
参考:Effective TypeScript 第二版(Dan Vanderkam)第 74 条“Know How to Reconstruct Types at Runtime”。
限制:资料未提供具体安装命令、版本要求、性能表现或其他库的详细用法。