JSON 转 TypeScript 接口
根据 JSON 示例生成 TypeScript 的 interface 或 type 别名,支持可选键、null 联合类型,并能从数组推断嵌套类型。免费且私密。
在部分数组项中缺失的键会变为可选 (?),null 值会变为 "| null",只出现 null 的值会变为 unknown。
完全在浏览器中运行,您的数据不会被上传。
相关工具
查看全部什么是 JSON 转 TypeScript?
粘贴一个 API 响应或配置示例,即可得到可直接使用的 TypeScript interface(或 type)声明。嵌套对象会成为单独导出的类型,只在部分数组元素中出现的键会变为可选,null 值会变为联合类型。
如何使用 JSON 转 TypeScript
- 将 JSON 示例粘贴到 JSON 输入中(或点击加载示例/打开文件)。
- 设置根类型名称(默认为
Root)。 - 选择输出风格:
interface或 type 别名。 - 复制生成的 TypeScript 代码,或下载为文件。
示例
{"id":1,"name":"A","tags":["x"]} export interface Root {
id: number;
name: string;
tags: string[];
} 何时使用 JSON 转 TypeScript
适合快速为 fetch 响应、测试数据或配置文件添加类型。单个示例无法揭示所有情况:字符串枚举、对象形状的联合或日期字符串仍然是普通的 string/合并类型,所以请检查并完善结果,或使用基于 JSON Schema 的生成器来处理契约。
JSON 转 TypeScript 的工作原理
程序会递归遍历示例,每个位置都会收集见到过的类型。对象数组会合并为一个类型:在部分元素中缺失的键变为可选,在某处为 null 的键变为可空,整数与小数混合会变为浮点类型,其他混合了多种类型的情况则回退为动态类型。嵌套对象成为各自命名的类型(键名的 PascalCase,数组键取单数:orders → Order),名称冲突时添加数字后缀。TypeScript 输出将整数和小数映射为 number,字符串为 string,布尔值为 boolean,数组为 T[],可空值为 T | null,动态值为 unknown。不是有效标识符的键会加引号("first-name": string)。
常见用例
- 在编写客户端之前为 REST API 响应添加类型
- 为 JSON 配置文件创建接口
- 把测试数据转换为带类型的对象
- 为第三方 Webhook 载荷搭建类型雏形
常见问题
为什么某个属性的类型是 unknown?
它在所有示例中的值都是 null(或数组为空),因此无法推断出真实类型。请添加包含真实值的示例,或手动修改类型。
如何检测可选属性?
当顶层值或嵌套的键是对象数组时,只在部分对象中出现的键会被标记为 ?。
它会生成运行时校验吗?
不会,它只输出类型声明,这些声明在编译时就会消失。如果需要运行时检查,请使用 JSON Schema 之类的校验器。