数组对象会合并
同一数组中的对象按字段名合并,缺失字段标记为可选,不再为每条记录生成一个接口。
DEVELOPER / TYPESCRIPT
把真实 JSON 样本推断成 TypeScript interface 或 type。对象数组会合并同名字段,某条记录缺少的字段自动标成可选,混合值生成联合类型。
INFERENCE OPTIONS
TypeScript 输出
3 个声明 · 2 个可选字段 · 1 个联合类型
export type Tool = ToolItem[];
export interface ToolItem {
id: number;
name: string;
active?: boolean;
tags: string[];
owner: ToolItemOwner;
score: number | null;
}
export interface ToolItemOwner {
name: string;
level?: number;
}HOW INFERENCE WORKS
同一数组中的对象按字段名合并,缺失字段标记为可选,不再为每条记录生成一个接口。
同一字段同时出现数字和 null 时生成 number | null,不会擅自改成可选属性。
样本中没有元素就没有类型证据。补一条真实元素后,工具才能推断准确类型。
没有出现在示例里的值仍可能在线上出现,正式项目应结合接口文档或 JSON Schema 复核。
RELATED TOOLS
USE & REVIEW
类型生成只能依据样本里真正出现的值。未出现的枚举值、错误响应、分页字段或偶发 null 无法凭空推断,因此输出适合作为起点。正式项目应再对照接口文档、OpenAPI 或 JSON Schema,并补充多组真实响应测试。
同一数组通常表示同一种记录。工具会按字段名合并每个对象:所有记录都有的字段保持必填,只在部分记录出现的字段标为可选,类型不同的同名字段生成联合类型。这样比给每一条记录生成一个几乎重复的接口更接近常见 API 数据结构。
null 表示字段存在但值为空,可选字段表示该键可能完全不存在。样本中同一字段出现数字和 null 时会生成 number | null;某条记录缺少该字段时才会加问号。两种情况可能同时存在,例如 score?: number | null。
对象模型需要声明合并或被类 implements 时常用 interface;需要联合、交叉或更灵活组合时常用 type。这个工具两种都支持,但数组根节点、原始值和联合类型仍会用 type 别名表达。选择应服从项目现有规范,不必为了风格强行转换。
这些键不是合法的裸 TypeScript 属性名,工具会保留原文字段并用字符串字面量包起来,例如 "user-name": string。字段不会被擅自改名,因此运行时访问方式仍与原始 JSON 一致。
不会。解析、样本合并、类型推断、复制和 .ts 下载都在当前浏览器完成。2 MB 上限用于避免在每次编辑时解析超大文本导致页面长时间卡顿。类型推断通常只需要一小段具有代表性的记录;大响应应先脱敏并裁成能覆盖字段变化的样本。