OpenReplay Logo
12k
12k

JSON 转 TypeScript 转换器

把 JSON 转换为整洁的 TypeScript 接口或类型——嵌套对象会变成命名且去重的接口,在浏览器本地处理。

输出
本地处理

关于此工具

JSON 转 TypeScript 的转换器会读取一份 JSON 文档并推断出它的静态类型:标量映射为 string、number 和 boolean;数组变成 T[];嵌套对象会被提取为各自命名的接口,而不是内联展开。这个工具遍历整棵值树,合并数组中每个对象的键(把在某些元素中缺失的键标记为可选),对形状完全相同的对象去重以复用同一个接口,并为任何不是合法标识符的属性名加上引号。当遇到 null 值时,它会与同级类型组成联合类型,空数组变成 unknown[],空对象变成 Record<string, unknown>。

用它把 API 响应转换为有类型的模型而无需手写,从夹具或配置文件搭建接口骨架,或者在把载荷接入代码之前核对它实际的形状。重命名根类型,在 interface 和 type 输出之间切换以匹配你代码库的约定,结果会随你粘贴或编辑而实时重新生成——然后直接把它复制进 .d.ts 或模型文件。

生成的类型只反映你所粘贴的样本——在你的示例中恰好缺失或为 null 的字段,在真实数据中仍可能出现,因此在信任它们之前请检查可选字段和 null 联合类型。

常见问题

它生成的是 TypeScript 接口还是类型别名?

两者都可以。默认是 interface,最适合你可能想要扩展或合并的对象模型;切换到 type 选项则改为输出类型别名,它可以表达接口无法表达的联合类型和元组。

它如何处理键不同的对象数组?

它会把所有元素的键合并到一个接口中。任何在至少一个元素中缺失的键都会用 ? 标记为可选,因此生成的类型能安全地描述数组中的所有元素。

为什么两个嵌套对象共用了同一个接口名?

字段集合及字段类型完全相同的对象会被去重为一个命名接口并复用,这样可以保持输出紧凑,并避免几乎完全相同的重复定义。