工具
ZH

JSON 转 TypeScript 在线转换工具

粘贴一个 JSON 示例(例如 API 响应),即可获得可直接使用的 TypeScript 接口。字段类型、可选属性和联合类型都会根据数据自动推断。

JSON → TypeScript

JSON

TypeScript

隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

如何从 JSON 生成 TypeScript

  1. 粘贴一个 JSON 示例。数组中包含的元素越多,可选字段和联合类型的识别就越准确。
  2. 设置根类型的名称,并选择 interface 或 type,以及是否添加 export 和 readonly。
  3. 将 TypeScript 代码复制到你的项目中,或下载为 .ts 文件。

如何从 JSON 推断 TypeScript 类型

JSONTypeScript
"Ada"string
42、3.14number
trueboolean
null 与其他值并存联合类型,如 string | null
"address": {"city": "Paris"}单独的 interface Address
"users": [{"id": 1}]User[],元素名称会改为单数形式
部分数组元素中缺失的键可选属性 key?:
[1, "a"](string | number)[]
[]unknown[]
{}Record<string, unknown>

示例

JSON {"id": 1, "name": "Ada", "tags": ["admin"], "manager": null} 会转换为:

export interface Root { id: number; name: string; tags: string[]; manager: null; }

请将 Root 重命名为更有意义的名称,例如 User 或 ApiResponse。结构完全相同的嵌套对象(例如账单地址和收货地址)会共用一个接口;不是合法标识符的键会加上引号,例如 "first-name": string。

常见问题

interface 还是 type,应该选哪个?

对于描述对象结构,两者的效果相同。interface 可以被扩展和合并,而 type 别名还能描述联合类型。许多团队用 interface 描述对象;请遵循你所在代码库的风格。

如何识别可选字段?

同一数组中的对象会被合并。在部分对象中缺失的键会成为可选属性(key?:),而值类型不同的键会成为联合类型。

生成的类型能在运行时校验数据吗?

不能。TypeScript 类型在代码运行时就不存在了。如需校验传入的数据,可以用我们的 JSON Schema 生成器从同一示例生成 JSON Schema,再借助 Schema 校验库进行校验。

我的 JSON 会被发送到服务器吗?

不会。类型在你的浏览器中生成,因此可以放心粘贴私有的 API 响应。