把变体放在同一数组位置
需要比较多条响应时,将记录组成一个合法数组。只有同一结构位置的对象会共同推断字段;文档其他位置恰好同名的属性,不会因此被拼成同一个业务模型。
类型生成
先看示例中缺少的 tag 和值为 null 的 score,再替换为你的响应。已有契约时,可切换 Schema 辅助模式。
解析与生成均在当前浏览器完成,不上传或存储输入。
3 个声明 · 1 个可选属性
JSON 转 TypeScript 适合在接入接口时建立第一版数据模型。只看一次成功响应,很容易把偶尔缺失的字段误写成必填;把多条有代表性的记录放进同一个数组,才有机会看见这些差异。
工具会把“字段不存在”和“字段存在但值为空”分别表达。结果仍需结合接口文档核对,特别是从未出现在样本中的字段、错误响应以及不同状态之间的关联,不能仅凭生成代码推断完整契约。
JSON 转 TypeScript 会读取数组里的所有元素。某条记录没有 tag 时,该字段标记为可选;score 同时出现数字与 null 时,则保留两种值的联合类型。缺失和空值不再被同一个开关混为一谈。
切换 Schema 辅助模式后,required 决定字段是否必填,枚举描述允许的值。工具遇到无法表达的断言会报出路径,不会忽略约束后继续给出看似完整的类型。切换模式保留输入,便于自行调整。
需要比较多条响应时,将记录组成一个合法数组。只有同一结构位置的对象会共同推断字段;文档其他位置恰好同名的属性,不会因此被拼成同一个业务模型。
模式切换不会替换输入内容;示例按钮会加载当前模式的示例。样本中的全部可选选项不会覆盖 Schema 的 required,因此切到契约输入后,该选项会禁用。
自动生成在停止编辑约 350 毫秒后运行。关闭后显示生成按钮,也可按 Ctrl/Cmd+Enter。输入或选项一变,复制和下载立即禁用,直到新结果成功;修改 Root 可统一调整派生名称。
同一位置出现数字和字符串时会产生联合类型。嵌套数组也会共同推断元素;空数组与非空数组并列时采用已有元素证据,完全没有元素信息时才使用 unknown[]。不会只抽取前几条记录。
字段在部分对象中不存在时,生成问号;显式 null 则保留为 null 或联合成员。仅看到空值时,不能猜出它未来是字符串还是数字。建议在项目中启用 strictNullChecks,让类型检查真正区分空值。
TypeScript 接口生成会为嵌套对象派生名称,冲突时添加稳定数字后缀。属性原名不做重命名,短横线、空格等内容用引号保护。根名称允许最多 64 个 ASCII 标识符字符,并拒绝保留字。
JSON Schema 转 TypeScript 支持基本类型、properties、required、单个 items、布尔 additionalProperties、标量 enum/const 及受限 anyOf。也可切换 interface 与 type,调整两格或四格缩进及 export。JSON 转 TS 输出的是声明代码。
工具合并同一数组位置所有对象的字段。部分对象缺少的属性会带问号,所有已观察值的类型共同决定该属性类型。只有一条记录时,没有证据判断它的某个字段是否也可能缺失。
可以。属性名保持原始拼写,必要时用字符串字面量加引号;嵌套声明名称则会转换成合法标识符。JSON 转 TypeScript 会避开生成名称冲突,但业务命名仍建议在编辑器里审阅。
本页的选择主要改变对象声明形式。interface 适用于对象结构,type 还能为联合类型、数组和基本类型命名。因此选择 interface 后,如果根值是数组或标量,最外层仍使用类型别名。
不同元素类型会形成联合类型,例如数字与字符串可生成 (number | string)[]。对象元素先共同推断字段,嵌套数组继续递归处理。它不会把每个数组位置生成为固定长度元组。
显式空值会保留。字段只出现 null 时,类型就是 null;同时出现数字时,结果为 number | null。字段是否可选由存在与否决定,不能通过移除 null 来替代。
发现需要核对的推断结果?