无需登录 数据私有 本地保存

JSON 转 TypeScript 接口生成器 - 自动推断类型定义

13
0
0
0

JSON → TypeScript 接口生成器

粘贴 JSON 数据,自动推断并生成 TypeScript 类型定义

支持嵌套对象、数组、混合类型自动推断 空数组推断为 any[] 快捷键:Ctrl+Enter 触发转换

常见问题

将 JSON 数据转换为 TypeScript 接口(interface)或类型别名(type)可以带来类型安全的好处。在 TypeScript 项目中,明确的类型定义能让 IDE 提供准确的智能提示、自动补全和编译时错误检查,避免运行时因数据结构不匹配导致的 bug。这在处理 API 响应、配置文件或复杂嵌套数据时尤为重要。手动编写这些类型定义耗时且容易出错,使用自动生成器可以大幅提升开发效率。

本工具通过递归遍历 JSON 数据结构来推断类型:
字符串string
数字(整数/浮点数) → number
布尔值boolean
null → 根据设置处理为可选属性、any 或联合类型
数组 → 分析元素类型,生成 T[];空数组推断为 any[]
嵌套对象 → 递归生成独立接口,按依赖关系排序输出
混合类型数组 → 生成联合类型如 (string | number)[]

interfacetype 在大多数场景下可以互换使用,但有一些关键差异:
interface 支持声明合并(同名接口自动合并),适合定义对象形状,扩展时使用 extends
type 更灵活,可以表示联合类型、交叉类型、元组等,但不能被声明合并;
• 对于纯对象类型定义,社区偏好使用 interface;对于复杂类型组合,type 更合适。
本工具默认生成 interface,您可以通过选项切换为 type 风格。

本工具提供三种 null 值处理策略:
标记为可选(推荐):属性使用 ? 标记,类型使用 any,适用于字段可能不存在的 API 响应;
使用 any:直接将类型设为 any,灵活性最高但失去类型检查;
联合类型:生成 T | null 形式,需要 TypeScript 的 strictNullChecks 开启。根据实际项目需求选择合适的策略。

本工具采用递归算法处理任意深度的嵌套结构。对于深层嵌套对象,会自动生成层级化的接口命名(如 UserAddressGeo),并按依赖关系从内向外排列。每个嵌套对象都会生成独立的类型定义,保持代码清晰可读。建议为根接口指定有意义的名称(如 ApiResponse),嵌套接口会自动继承父级命名上下文。如果 JSON 非常庞大(如超过 10MB),建议先拆分为更小的片段分别处理。

生成的类型定义可以直接复制到 .d.ts 文件或 .ts 模块中使用。建议在以下场景使用:
• 为 REST API / GraphQL 响应定义类型;
• 为配置文件(如 package.json、CI 配置)创建类型;
• 快速搭建数据模型的类型骨架。
对于生产环境,建议根据实际业务语义进一步细化类型名称和注释,并将重复出现的相似结构抽取为通用类型,以提高可维护性。