JSON Schema 和 TypeScript 类型区别
两者都「描述数据的形状」,但作用时机不同:JSON Schema 在运行时校验真实数据,TypeScript 类型在编译期约束变量。
核心区别
| 维度 | JSON Schema | TypeScript 类型 |
|---|---|---|
| 作用时机 | 运行时(校验序列化后的 JSON) | 编译期(tsc 检查) |
| 载体 | 一份 JSON 数据 | 源码里的类型注解 |
| 能校验运行时输入? | 能(接 Ajv) | 不能(运行时被擦除) |
| 能用在 JS 项目? | 能 | 不能(需要 TS 编译) |
| 可表达范围 | 还能约束取值、格式、枚举等 | 仅形状/联合/泛型 |
能不能互相替代
不能。典型组合是:
- 用 TypeScript 类型约束你代码内部的变量,写业务时少出错。
- 用 JSON Schema校验外部输入(接口请求/响应、配置文件),防止脏数据进系统。
本工具两种都能生成:同一份 JSON,点一下就能分别拿到 Schema 和 TS interface,方便你两边都用上。