HandyTools Hub

JSON 转 TypeScript

即时从 JSON 数据生成 TypeScript 接口

声明方式
生成的 TypeScript 将显示在此处...

How to Use

  1. 粘贴 JSON — 将任意合法的 JSON 对象或数组粘贴到输入框中。
  2. 调整选项 — 设置根类型名称,选择 interface 或 type 输出,并切换 export 关键字。
  3. 查看结果 — 输入时即时生成 TypeScript 声明,嵌套对象会提取为独立命名的接口。
  4. 复制代码 — 点击复制,将结果直接粘贴到您的项目中。

Features

  • 嵌套接口 — 嵌套对象转换为独立的接口,名称由属性路径转为 PascalCase
  • 智能数组 — 自动统一元素类型;混合数组生成联合类型,对象数组合并并标记可选键
  • 形状复用 — 结构完全相同的对象共享同一个接口,避免重复定义
  • interface 或 type — 两种声明风格任选,可自由开关 export 关键字
  • 非法 JSON 检测 — 清晰的错误提示,准确说明解析失败的原因
  • 100% 本地运行 — 数据不会离开您的浏览器。

Use Cases

  • API 对接: 粘贴 API 响应样例,立即获得可直接用于 fetch 调用的 TypeScript 类型
  • 旧项目迁移: 项目迁移到 TypeScript 时,将现有 JSON 配置或 mock 数据转换为类型结构
  • 文档编写: 为 Webhook 负载或事件结构生成准确的类型定义文档
  • 快速原型: 在编写校验 Schema 之前,探索新数据源时快速搭建类型骨架

常见问题

interface 和 type 输出有什么区别?

interface 是 TypeScript 中描述对象结构的经典方式,支持声明合并;type 别名更灵活,还可以表示原始类型、数组和联合类型。使用切换按钮即可在两种输出之间转换,二者描述的是同一种结构。

混合类型的数组会如何处理?

工具会检查数组中的每个元素并统一其类型。所有元素类型相同时得到 T[];类型混合时生成联合类型,如 (string | number)[]。对象数组合并为一个接口,部分元素缺失的键会标记为可选。

我的 JSON 数据会被发送到服务器吗?

不会。所有转换都在浏览器中通过客户端 JavaScript 完成,JSON 数据不会离开您的设备,因此可以放心粘贴私有 API 响应或配置数据。