TS

JSON 转 TypeScript

从 JSON 生成 TypeScript 接口

JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月29日
选项模式
JSON 输入

先贴 JSON,直接生成 TypeScript 类型;可选字段和 readonly 策略可在高级模式查看。

输出关键字
🔒 浏览器内本地处理
TypeScript Output
TypeScript 类型会显示在这里
页面阅读模式

完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。

工具说明

从一份 JSON 样例生成 interface 或 type 类型草稿。嵌套对象生成命名声明,数组项类型组成联合;“可空字段设为可选”为 null 属性加问号,Readonly 为属性添加只读修饰。根数组和标量包装在 value 属性中。请结合实际契约检查并编译结果;输入草稿保存在浏览器本地。

生产可用片段

区分 null 与可选属性

text

输入 JSON:
{"note":null,"active":true}

默认:interface;可空字段设为可选
输出:
export interface Root {
  note?: null;
  active: boolean;
}

失败门诊(高频踩坑)

把自动问号当成真实接口规则

原因:开启选项时,工具为样例中的 null 属性加问号。它无法从单个样例推断缺失字段规则,也不会把数组内对象合并成一个接口。

修复:按 API 契约检查草稿,运行 TypeScript 编译器,并修正特殊属性名、生成名称冲突和必要的联合类型。

常见问题

生成的类型能作为接口契约吗?

它是按当前 JSON 样例值推断的草稿,不是 API 契约或运行时校验器。嵌套对象生成命名声明;数组中的不同对象逐项生成类型并组成联合,不会合并为一个可选字段接口。

null 字段为什么出现问号?

默认开启“可空字段设为可选”,null 属性会生成 note?: null;关闭后为 note: null。问号表示可缺失,null 表示值可为空,两者不同;单个样例不能确定真实 API 规则。

根数组和标量如何表示?

会包装成带 value 属性的 Root 声明,空数组使用 unknown[]。这是生成草稿的包装结构,不代表原 JSON 真的有 value 属性。

复制后还需检查什么?

检查类型名、属性语法、null、联合类型和业务语义,再运行 TypeScript 编译器;特殊名称或生成名称冲突可能需要手动修正。生成在本地完成,输入草稿会保存在当前浏览器。

继续浏览