GEXNO / 指南 / JSON 转 TypeScript 类型定义:一键生成 interface,告别 any

JSON 转 TypeScript 类型定义:一键生成 interface,告别 any

拿到接口 JSON 手写 TypeScript 类型太累?在线把 JSON 转成 interface / type,嵌套对象自动拆类型,本地处理不上传。

为什么 TypeScript 项目离不开类型生成

前端接接口的第一步是把响应数据声明成类型:没有类型,TS 就退化成「带花括号的 JS」,any 满天飞,重构和代码提示全部失效。

手写类型的工作量与接口字段数成正比,而且接口一改就要同步维护。类型生成器把这个循环变成「粘贴 JSON → 复制 interface」,之后只需人工审查。

interface 还是 type?

两者在对象类型上能力几乎等价。团队惯例优先:多数项目接口建模用 interface、联合类型与工具类型用 type。生成器输出 interface,需要 type 时改个关键字即可。

实操:从响应样例到类型定义

打开 JSON 转 TypeScript 工具,粘贴一段接口响应,右侧立刻得到按嵌套层级拆分的 interface 定义,复制进 types.ts 就能用。

和本站其他工具一样,转换在浏览器本地完成——生产接口的样例数据不上传。

JSON 转 TypeScript 工具:粘贴 JSON 生成 interface
嵌套对象自动拆成独立 interface,复制即可进项目

生成之后必做的三件事

和 JSON 校验搭配使用

样例本身可能是坏的(复制时截断、带注释)。先过一遍 JSON 校验确认语法,再生成类型,能省掉一轮「为什么生成的类型是空的」的困惑。

常见问题

JSON 转 TypeScript 会上传我的数据吗?

GEXNO Tools 的转换在浏览器本地完成,粘贴的 JSON 不经过任何服务器。

生成的 interface 和 type 有什么区别?

对对象类型而言两者几乎等价。interface 可被继承与合并,type 擅长联合类型与映射类型。团队统一一种即可。

数组字段怎么生成类型?

数组会生成对应元素类型的 Array<T> 或 T[];元素结构不一致时建议人工复核并统一类型,具体推断行为以工具实际输出为准。

可空字段怎么表示?

样例中值为 null 的字段会生成联合类型 string | null 之类;建议人工确认该字段是否真的可为空。

字段名不是合法标识符怎么办?

生成时会用引号包裹处理;消费端通过 obj["weird-name"] 访问,或直接生成映射函数转成规范命名。

打开 JSON 转 TypeScript 工具 →