⌘K 切换工具
FORMAT & CONVERT

JSON → TypeScript接口生成器

从JSON生成TypeScript接口(interface)定义。

local
json-code
§01 关于此工具

概述

粘一份 JSON 载荷进来,就能拿到对应的 TypeScript interface 声明——在给一个没有文档的 API 做封装、给配置文件加类型,或者从一份样本响应起步搭 DTO 时,都很省事。基本类型分别映射到 stringnumberboolean;嵌套对象被抽成独立的 interface;不能作为合法标识符的属性名会自动加上引号。子 interface 的名字由它所在的属性键推导,父级按名字引用它,所以你拿到的是一组彼此引用的声明,而不是一个巨大的内联类型。

使用方法

  1. Root type name 里设定顶层 interface 的名字(默认是 Root)。
  2. 把样本粘贴到 JSON 区域。
  3. TypeScript 输出里复制生成的声明,它随你的输入更新。

示例

  • {"id":1,"name":"Alice","meta":{"active":true}}

    interface Root {
      id: number;
      name: string;
      meta: Meta;
    }
    

    以及另外一个 interface Meta { active: boolean; }

说明

类型是从单一样本里推断出来的:null 值的类型就是 null,可选字段无法被识别出来,联合类型也永远不会出现。请把输出当作一个起点,再对照真实的 API 契约调整可空性和可选性。数组的元素类型只看第一个元素,空数组会得到 unknown[]

FAQ
我的 JSON 会发到服务器吗?
不会。解析和类型生成都在浏览器里完成。不上传任何内容,所以把含真实数据的 API 响应粘进来也没问题。
嵌套对象是怎么处理的?
每个嵌套对象都会成为一个单独命名的 interface,名字由它的属性键推导(例如一个 "meta" 属性会产出 Meta 这个 interface),父级则按名字引用它。
数组的类型是怎么定的?
元素类型由数组的第一个元素推断。空数组的类型是 unknown[],如果你知道真实的元素类型,请手动改掉。