跳到主要内容
← 返回

JSON 转 TypeScript - 在线接口生成器

代码
本地运行 · 不上传

免费在线 JSON 转 TypeScript 接口工具,自动生成 interface 和 type,支持嵌套对象和数组

结果有帮助吗?

本地工具可在 DevTools → Network 搜索输入内容,通常不会出现在请求中。

下一步

使用指南

有一份 API JSON,却要手写 interface 时最容易漏字段、把可选写成必填。本工具从 JSON 样例推断 TypeScript 类型:可选 interface 或 type、控制可选策略与 null 处理,嵌套对象自动拆成具名类型——全部本地生成。

1. 生成类型

推断质量取决于样例质量:如果某字段有时缺失,样例里也要体现缺失或显式 null,否则会被标成必填。数组会遍历全部元素:元素类型不一致时生成联合类型(如 (string | number)[]),元素是对象且同结构时合并为单个 interface,只在部分元素出现的字段标成可选。空数组会落成 unknown[]。

  1. 粘贴一份有代表性的 JSON(覆盖真实会出现的字段与嵌套)。
  2. 选择输出为 interface 或 type,按需打开 export。
  3. 调整可选策略(全部可选 / 全部必填 / 智能)与 null 处理(any / unknown / 标成 optional),复制结果进项目。

2. 选项怎么选

  • 智能可选:根据值是否为 null/undefined 倾向标 optional,适合真实响应样例。
  • 全部必填:适合你确信契约稳定、想让编译器逼出缺字段的场景。
  • null → optional:把 null 当成「可能没有」,而不是 any 黑洞。
  • 嵌套对象按键名生成独立的 interface/type(如 address → Address、users → User):生成后按领域语义重命名一次更清晰。

3. 生成后建议立刻做的三件事

本工具不做运行时校验。类型只在编译期生效;运行时仍需 JSON Schema 或 zod 等方案。先格式化 JSON、再生成类型,能少踩尾逗号与注释导致的解析失败。

  • 用真实第二份响应再生成一次,diff 两边类型,抓住偶发字段。
  • 把 any/unknown 收敛成业务联合类型或枚举,不要长期留在边界。
  • 若还要给后端或其他语言用,同一份 JSON 可再跑 JSON→Go / JSON→Java。

4. 类型推断的收敛策略

单样本生成 TypeScript 类型的固有局限是「以偏概全」:一个字段在样本里是数字,真实数据里可能是 null。工程上的两种收敛路径:多样本联合(把若干真实响应喂给工具,字段类型取并集,nullable 自动浮现)与宽松模式(unknown 兜底 + 逐步收紧)。本工具支持深浅两档:严格档适合稳定的第三方 API,宽松档(加 ? 与 null 联合)适合仍在演进的自家接口。异构数组是另一个分叉点——元素结构不一致时,要么联合类型、要么拆成判别式联合(加 kind 标签),一键工具只能选前者,后者需要人工设计。

5. 生成类型的下游用法

  • 类型只做编译期契约:运行时校验(zod/valibot 从类型反向 schema)才是边界防御,两者配合而非替代。
  • 对接 OpenAPI 的服务优先从 schema 生成(openapi-typescript),样本生成只作为无文档接口的兜底。
  • 大接口的生成结果按领域拆文件再手动整理——单个千行 types.d.ts 的可维护性趋近于零。

6. 样例覆盖与验收

用至少两份真实响应再生成一次,diff 类型抓住偶发字段。空数组会落成 unknown[];异构数组元素会成联合类型。生成结果是编译期契约,运行时仍需 zod / JSON Schema。嵌套对象按键名拆具名类型后,按领域语义重命名一次更易维护。无 OpenAPI 文档时本页是兜底,有 schema 时优先从 schema 生成。

常见问题

安全。类型推断全部在本地运行,数据不离开你的浏览器;生产响应若含敏感字段,先脱敏再粘贴更稳妥。

支持。嵌套对象按键名生成独立的 interface(如 address → Address、users → User),生成后按领域语义重命名一次更清晰;对象数组元素同结构时合并为一个类型,缺字段标成可选;空数组会落成 unknown[]。

工具会遍历全部数组元素:原始类型混合时生成联合类型(如 (string | number)[]);元素是对象且结构一致时合并为单个 interface,只在部分元素出现的字段自动标成可选;共享键类型冲突时退化为元素类型并集,便于人工再拆。

可选 interface 或 type 输出、按需开启 export;可选策略有全部可选 / 全部必填 / 智能三档——智能档根据 null/undefined 倾向标 optional,适合真实响应样例;null 处理可选 any / unknown / 标成 optional。注意推断质量取决于样例:某字段有时缺失,样例里就要体现,否则会被标成必填。

不能。类型只在编译期生效,本工具不做运行时校验;边界防御要用 JSON Schema 或 zod 等方案(可从类型反向生成 schema),两者是配合关系而非替代。

有 schema 时优先用 openapi-typescript 等从 schema 生成,本工具是无文档接口的兜底。生成后建议用第二份真实响应再跑一次并 diff 两边类型,抓住偶发字段;再把 any/unknown 收敛成业务联合类型或枚举。

相关工具

相关文章