JSON 转 TypeScript 🔒 完全在您的浏览器中运行——不上传任何数据。

从 JSON 样本生成 TypeScript 接口。

 

关于此工具

手写 TypeScript 接口去匹配 API 响应是重复劳动,而且容易出现细微错误。把一段样本 JSON 粘贴到这里,立即得到对应的接口。嵌套对象会被提取为各自命名的接口,对象数组会被合并——某些条目缺失的键会变为可选,具有多种类型的值会变为联合类型。

它完全在你的浏览器中运行,使用一个轻量推断器——你的 JSON 绝不会被上传。粘贴、按需修改根接口名,然后把可直接使用的类型复制到你的项目中。

常见问题

我的 JSON 数据会被上传吗?

不会。解析和类型推断完全在浏览器的 JavaScript 中运行——你的 JSON 数据不会离开你的设备。

如果数组里各个对象的字段不一样,它是怎么处理的?

它会把数组中所有对象的键合并进同一个接口;只要有对象缺少某个键,该键就会用 `?` 标记为可选,而不会被直接丢弃。

如果数组里混合了不同类型(比如数字和字符串),会怎样处理?

它会生成一个联合类型数组,比如 `(string | number)[]`,这样类型仍然能准确反映样本中实际出现过的每一种值。

可以生成 type 别名而不是 interface 吗?

可以,打开“as type”开关,就会把每个生成的 `interface Name {}` 转换成 `type Name = {}`——如果你的代码库更偏好使用 type 别名,这会很有用。

如果粘贴了无效的 JSON 会怎样?

工具会显示错误信息,精确指出问题所在的行号和列号,并支持直接跳转过去,而不是只给一句笼统的“无效 JSON”提示。

它能处理嵌套对象和数组,而不只是扁平的 JSON 吗?

会。嵌套对象会生成各自命名的接口,名字取自父级键(比如 `profile: {...}` 会生成一个 `Profile` 接口),数组名会被单数化(`roles` → `Role[]`)。对象数组会生成一个所有元素共用的接口,字段若不是每个元素都有就标记为 `?`——而不会为每个数组项单独生成接口。