JSON 转 TypeScript 生成器

从任意 JSON 生成 TypeScript interface 声明。支持嵌套对象、数组、联合类型和可选属性,纯浏览器运行,免费在线工具。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册
JSON 输入
TypeScript 输出

使用方法

  1. 将 JSON 粘贴或输入到左侧面板,工具会实时验证并高亮错误。
  2. 可选:设置 Root interface name(默认:RootObject)。
  3. 勾选 Make properties optional 可将所有字段标记为 ? 可选。
  4. 勾选 Use type instead of interface 可将输出关键字改为 type
  5. 点击 Generate TypeScript 生成接口定义。
  6. 点击 Copy 将输出复制到剪贴板。

类型推断规则

  • nullnull
  • 字符串 → 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' 可切换输出关键字。

数据会发送到服务器吗?

不会。整个类型推断引擎完全在浏览器中运行,数据不会离开你的设备。