JSON 转 TypeScript 生成器
从任意 JSON 生成 TypeScript interface 声明。支持嵌套对象、数组、联合类型和可选属性,纯浏览器运行,免费在线工具。
使用方法
- 将 JSON 粘贴或输入到左侧面板,工具会实时验证并高亮错误。
- 可选:设置 Root interface name(默认:
RootObject)。 - 勾选 Make properties optional 可将所有字段标记为
?可选。 - 勾选 Use type instead of interface 可将输出关键字改为
type。 - 点击 Generate TypeScript 生成接口定义。
- 点击 Copy 将输出复制到剪贴板。
类型推断规则
null→null- 字符串 →
string - 数字 →
number - 布尔值 →
boolean - 空数组 →
unknown[] - 对象数组 → 合并接口 +
ItemName[] - 混合类型数组 → 联合类型,如
(string | number)[] - 嵌套对象 → 独立具名接口
示例
输入以下 JSON:
{"user": {"name": "Alice", "age": 30}, "tags": ["admin", "user"]}
工具生成:
interface User {
name: string;
age: number;
}
interface RootObject {
user: User;
tags: string[];
} FAQ
这个工具生成什么?
它从 JSON 对象生成 TypeScript interface(或 type alias)声明。每个嵌套对象都会被提取为独立的具名接口;数组中的混合类型会生成联合类型。
嵌套对象如何处理?
每个嵌套对象字段会被提取为单独的接口,命名方式为字段名的 PascalCase。例如字段 'address' 对应 'Address' 接口,父接口引用该名称。
对象数组如何处理?
如果数组包含多个对象,所有对象的字段会合并为一个 item 接口。仅部分对象中存在的字段会被标记为可选。
'Make properties optional' 选项有什么用?
勾选后,所有生成接口的每个属性都会加上 '?' 后缀,变为可选。适合期望接收不完整数据或需要宽松类型定义的场景。
interface 和 type 有什么区别?
两者都可以描述对象结构。'interface' 支持声明合并,是对象类型的惯用写法;'type' 更灵活,还可以表示基本类型、联合类型和元组。勾选 'Use type instead of interface' 可切换输出关键字。
数据会发送到服务器吗?
不会。整个类型推断引擎完全在浏览器中运行,数据不会离开你的设备。