JSON 转 TypeScript 类型指南
JSON(更新于 2026年6月2日)
为什么需要 JSON 转 TypeScript 类型
在前后端协作中,API 响应通常是 JSON 格式。手动编写 TypeScript 接口既耗时又容易出错,特别是当接口字段多、嵌套深时。自动生成类型定义可以:
- 减少手写接口的工作量
- 避免字段名拼写错误
- 保持前后端类型一致
- 加速代码补全和重构
基本转换规则
简单对象
{
"id": 1,
"name": "张三",
"active": true
}
生成结果:
interface RootObject {
id: number;
name: string;
active: boolean;
}
类型映射规则
| JSON 值 | TypeScript 类型 |
|---|---|
"hello" |
string |
42 |
number |
3.14 |
number |
true / false |
boolean |
null |
null |
[1, 2, 3] |
number[] |
{"a": 1} |
嵌套接口 |
使用 JSON→TypeScript工具
步骤一:获取 JSON 数据
从浏览器开发者工具的 Network 面板复制 API 响应,或直接粘贴已有的 JSON 数据。
步骤二:打开工具
进入 JSON→TypeScript工具,将 JSON 粘贴到输入区域。
步骤三:配置生成选项
- 根接口名称:默认
RootObject,建议改为语义化名称(如UserInfo) - 导出修饰符:选择
interface或type - 可选字段:值为
null的字段是否标记为可选(?) - 只读修饰符:是否为所有字段添加
readonly
步骤四:生成并复制
点击生成按钮,TypeScript 类型定义即刻输出,一键复制到剪贴板。
处理嵌套对象
深层嵌套的 JSON 会自动拆分为多个接口:
{
"user": {
"profile": {
"avatar": "url",
"bio": "text"
}
}
}
生成:
interface Profile {
avatar: string;
bio: string;
}
interface User {
profile: Profile;
}
interface RootObject {
user: User;
}
建议将生成的接口拆分到独立文件中,按模块组织。
处理联合类型
当数组中包含不同类型的元素时:
{
"items": ["text", 42, true]
}
工具会生成联合类型:
interface RootObject {
items: (string | number | boolean)[];
}
处理可选字段
API 响应中某些字段可能不存在,常见处理方式:
- 字段值为
null时标记为可选:bio?: string | null - 字段缺失时标记为可选:
bio?: string - 在工具中勾选「null 字段标记为可选」即可自动处理
实战:从真实 API 生成类型
- 打开浏览器开发者工具 → Network 面板
- 找到目标 API 请求,右键 → Copy Response
- 粘贴到 JSON→TypeScript工具
- 设置根接口名称(如
ApiResponse) - 生成后复制到项目的
types/目录
常见问题
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 类型过于具体 | 单条数据推断类型 | 补充多条样本数据 |
| 嵌套层级太深 | JSON 结构复杂 | 手动合并部分接口 |
| 数组元素类型不一致 | 混合类型数组 | 使用联合类型或泛型 |
| 日期变成 string | JSON 无日期类型 | 手动改为 Date 类型 |
进阶技巧
- 用 JSON格式化 先整理 JSON 再生成类型
- 同样方法可用 JSON→Go工具 生成 Go 结构体
- 生成的接口建议配合 Zod 做运行时校验
- 大型项目推荐用 openapi-typescript 从 Swagger 生成
总结
从 JSON 自动生成 TypeScript 类型是提升开发效率的利器。JSON→TypeScript工具 让你在几秒内完成类型定义,避免手动编写的繁琐和错误。结合本文的嵌套处理、可选字段等技巧,可以应对各种复杂场景。
#JSON#TypeScript#类型生成#接口定义#开发