JSON 转 TypeScript本地生成接口与类型别名
zh-CN

AppHelp

将 JSON 转换为 TypeScript 类型

粘贴一个 JSON 对象或一组样本,即时获得可编辑的 TypeScript 定义,并可推断可选字段、调整命名、复制或下载 .ts。

JSON 类型生成工作区

粘贴 JSON 样本后立即获得可编辑的 TypeScript 定义。

本地运行
174 个字符16
TypeScript 输出
array2 个类型4 个属性
export type Root = RootItem[];

export interface RootItem {
  id: number;
  name: string;
  roles: string[];
  nickname?: string;
}

类型依据样本值推断。用于生产前请核对可选字段、null 与空数组的真实契约。

常见任务

  • JSON 转 TypeScript
  • JSON 转 TypeScript 在线
  • JSON 生成 TypeScript interface
  • JSON 转 TS 类型
  • TypeScript 接口生成器
  • JSON 数组转 TypeScript
  • JSON 转 type alias
  • 前端类型生成工具
  • 本地 JSON 转换
  • 免费 TypeScript 生成器

快速答案

粘贴有效 JSON 即可即时生成 TypeScript interface 或 type。嵌套对象会生成命名声明,数组中的多个样本会合并,缺失字段可标记为可选,混合值会形成联合类型,null 也会明确保留;所有处理都在浏览器本地完成。

使用步骤

  1. 1. 粘贴有代表性的 JSON使用真实但不含敏感信息的 API 样本。数组字段不一致时应提供多个元素,以便推断可选键与联合类型。
  2. 2. 设置名称和输出结构选择根类型名、interface 或 type、数组写法、可选键规则、readonly 与代码格式。
  3. 3. 检查推断边界重点核对空数组、null、混合基础类型、日期字符串以及重命名后的属性是否符合真实 API 契约。
  4. 4. 复制或下载复制声明或下载 types.ts,再按业务需要补充注释、枚举、品牌类型或运行时校验。

示例

简单对象

输入
{"id":1,"name":"Ada","active":true}
输出
export interface Root { id: number; name: string; active: boolean; }

数组中的可选键

输入
[{"id":1},{"id":2,"nickname":"lin"}]
输出
export interface Root { id: number; nickname?: string; }

启用缺失键推断后,只在部分样本中出现的属性会带 ?。

可空字段

输入
[{"score":9.5},{"score":null}]
输出
score: number | null;

null 会被保留,而不是静默转成 any。

常见场景

  • 为前端项目快速建立 API 响应接口
  • 记录 Webhook 负载与配置文件结构
  • 在定义契约前合并比较多个对象样本
  • 为测试、夹具和数据管道创建起始类型
  • 把复制的 JSON 示例转换为可代码审查的声明

注意事项

  • 单一样本无法证明所有可选字段或枚举值;包含不同对象的数组能提供更强推断。
  • 空数组没有可观察元素,默认只能生成 unknown[] 或 any[]。
  • 类似 ISO 日期的字符串默认仍是 string;即使选择 Date,运行时 JSON 仍返回字符串。
  • camelCase 会改变属性名,API 使用 snake_case 时可能需要映射层。
  • 静态 TypeScript 类型不会在运行时校验不可信数据,需要时应配合 Schema 库。

功能特点

  • 无需上传即可即时将 JSON 转为 TypeScript
  • 支持 interface、type 与自定义根类型名称
  • 推断嵌套对象、数组、联合类型、null 和可选键
  • 支持 readonly、分号、export、camelCase、Date 与数组格式
  • 提供四类真实示例与行内 JSON 错误
  • 复制代码或下载可继续编辑的 .ts 文件

常见问题

可以生成 interface 还是 type?
两者都支持。选择 interface 或 type 后,工具会对生成的对象声明统一应用该样式。
如何识别可选属性?
当数组含多个对象时,如果某个键只在部分对象中出现,启用可选键推断后它会获得 ?。
如何处理 null 与混合类型?
工具会合并观察到的类型,例如同一字段出现 number 和 null 时生成 number | null。
空数组会生成什么类型?
因为没有元素可供推断,会按照选项生成 unknown[] 或 any[]。
生成的 TypeScript 能在运行时校验 JSON 吗?
不能。TypeScript 类型在运行时会被擦除;不可信响应需要额外的运行时 Schema 或校验器。
我的 JSON 会被上传吗?
不会。JSON.parse、类型推断、复制与 .ts 生成都在浏览器本地完成。