JSON 转 TypeScript
JSON 转 TypeScript 在浏览器本地将 JSON 样本转换为 TypeScript interface 与 type,支持可选字段、联合/null/Date 推断、根类型名和 .ts 复制下载。
JSON
字符
0 / 50,000
TypeScript
JSON 转 TypeScript将有效 JSON 样本粘贴到左侧编辑器。可选设置根类型名,例如 ApiResponse。在右侧查看 TypeScript:对象生成 interface,数组或原始值生成 type。复制或下载生成的 .ts;输入区也可复制或下载 JSON 样本。
快速开始
1
2
3
4
常见使用场景
把真实 API 响应快速整理成前端页面、SDK 客户端或接口联调时可直接使用的 TypeScript 类型。
在正式定义接口契约前,先用 JSON 样本观察可选字段、null 与联合类型的推断结果。
把 mock JSON 数据快速转换为测试夹具、Storybook 示例或原型阶段可用的类型定义。
当后端响应结构调整时,用最新 JSON 样本快速检查 User、Meta 等嵌套声明是否需要同步更新。
使用建议
尽量提供有代表性的 JSON 样本。本页基于样本推断类型,没出现的字段或取值不会出现在输出里。
空数组会生成为 unknown[];空对象会生成为扩展 Record<string, unknown> 的 interface,直到你提供更丰富的样本。
嵌套声明会根据属性名做规范化,因此新输出更可能出现 User、Meta 这类名称,而不是旧版的根名前缀形式。
只有在 JSON 合法时才会生成结果。若解析失败,编辑器会提示出错的行号和列号。
合法的自定义根类型名会原样保留;非法名称会被规范化为合法的 PascalCase TypeScript 标识符。
类型推断边界
生成器只根据当前样本推断,不读取 JSON Schema、OpenAPI、GraphQL、文件、URL、JSON Lines 或批量样本。
数组会合并已观察到的元素结构:部分元素缺失的字段会变成可选字段,null 或混合取值会进入联合类型。
类似日期的字符串可能被推断为 Date,但运行时 JSON 值仍然是 string,除非你的代码主动解析它。
对象根节点生成 interface;数组和原始值根节点生成 type;空数组使用 unknown[],空对象扩展 Record<string, unknown>。
根类型名默认 Root。合法自定义名会保留;非法名称和保留字会规范化为 PascalCase。
输出只是静态 TypeScript 声明:不会生成运行时校验器、解析器、序列化器、Zod/Yup/io-ts schema 或 API client。
限制与兼容性
该工具基于样本数据推断类型,而不是基于正式 schema 或接口契约真源。样本里没出现的字段无法被自动猜出。
输入必须是严格 JSON。注释、尾随逗号以及其它 JavaScript 风格语法都会被拒绝。
当前生成的 TypeScript 代码不会自动附带 export 声明;下载 .ts 文件和在代码里添加 export 关键字是两件事。
输出仅为静态 TypeScript 声明,不会生成运行时校验器、解析器、序列化逻辑、Zod schema 或 API client。
隐私与安全
JSON 转 TypeScript 在浏览器本地完成。JSON 输入可能作为浏览器草稿保留。若启用已保存工作区或 WebDAV 同步,JSON 输入、根类型名、输入/输出行号偏好和换行偏好可能随同步保存。生成的 TypeScript、校验错误、行/列高亮、复制状态和撤销历史都由当前输入派生,不会保存为单独结果数据。输入 JSON 下载和 .ts 输出下载只在点击下载时创建。本工具不会上传文件或创建附件。
常见问题
对象根节点会生成 interface;数组和原始值根节点会生成 type。顶层对象数组会生成类似 type Root = RootItem[] 的根类型,并单独声明数组项结构。
空数组和空对象缺少足够样本,无法推断更精确结构。生成器会先使用 unknown[] 或 Record<string, unknown>,直到你提供更有代表性的示例值。
如果你输入的名称本身已经是合法的 TypeScript 标识符,它会被原样保留,例如 ApiResponse。非法名称会在生成前被规范化为稳定的 PascalCase 标识符。
当前生成器会根据属性路径规范化嵌套名称,并在命名冲突时做稳定区分。因此新输出更倾向使用 User、Meta 或 FooBarClass 之类的名称,而不是始终带上根类型名前缀。
当前输出契约故意只返回纯声明文本,不自动附带 export。这样能保持结果中性,你可以按项目风格自行添加 export。