OpenAPI架构转TypeScript类型转换器
将OpenAPI 3.x(或Swagger 2.0)文档的组件架构转换为TypeScript接口和类型别名声明。解析$ref、将allOf转换为交集、oneOf/anyOf转换为联合、处理discriminator和可空字段,并生成可下载的.ts文件。
输入
输出
使用指南
粘贴OpenAPI 3.x(或Swagger 2.0)文档,为components.schemas下的每个架构获取简单的TypeScript interface/type声明 — 无服务器、无代码生成CLI、无npm install。
手动将API架构复制到TypeScript既繁琐又容易出现细微错误:每个$ref都必须追溯到其目标,allOf/oneOf/anyOf需要正确的union/intersection形状,错过的required或nullable字段会默默创建一个关于API实际返回内容的虚假类型。此工具从规范本身确定性地解决所有这些问题,因此结果每次都与文档匹配。
如何使用
- 将OpenAPI 3.x或Swagger 2.0文档(YAML或JSON都可以)粘贴到输入框中,或单击尝试示例来加载示例Pet Store规范。
- 如果希望每个interface、type和属性都使用其架构的
description进行注释,请启用添加来自架构描述的JSDoc注释。 - 复制或下载生成的
.ts文件。
编辑规范时,输出会自动更新。
转换的内容
$ref解析 —components/schemas、$defs或(对于Swagger 2.0)definitions中的每个引用都按名称解析,包括不同bucket中架构之间的引用。与转换为运行时验证器不同,普通TypeScript类型不需要任何声明顺序或循环处理 — interface和type alias可以以任何顺序相互引用(包括自己),因此自引用的"tree node"架构就能工作。allOf— 变成交集类型(A & B),每个allOf条目一个成员。oneOf/anyOf— 变成联合类型(A | B)。discriminator— 不需要特殊语法:一旦每个union成员都是具有其自己的literal型属性的对象类型(kind: "cat"对kind: "dog"),TypeScript已经在该属性上缩小了union。生成的类型是在切换共享字段的瞬间判别的union。nullable: true(OpenAPI 3.0)和**type: [T, "null"]**(OpenAPI 3.1 / JSON Schema)— 两者都变成T | null。enum— string enum变成string literal的union;const变成单个literal类型。required/ optional properties — 必需的键保持必需;其他的都得到?。additionalProperties—false添加[key: string]: never;索引签名;架构值变成& Record<string, T>。- 隐式形状 — 省略
type但声明properties或items的架构(在手写规范中常见)仍然被解读为对象或数组,而不是回到unknown。
对象架构作为export interface发出;其他一切(union、intersection、enum、数组alias、仅$ref架构)作为export type发出。
参数、请求体和路径呢?
此工具仅读取components.schemas — 可重用的数据形状。它不为paths、操作参数或响应信封生成类型;对于这些,请针对规范使用完整代码生成器,或单独粘贴所需的每个架构。
我的规范使用Swagger 2.0(swagger: "2.0")— 这有效吗?
是的,definitions的读取方式与components.schemas相同。如果您更喜欢先将整个文档转换为OpenAPI 3.x — 新的$ref路径、requestBody、servers等等 — 请参阅OpenAPI v2 to v3 Converter。
我的规范首先被验证吗?
否 — 此工具假设文档已经格式正确,并纯粹专注于类型生成。如果您想要结构验证(缺少operationId、无法解析的$ref、未声明的路径参数)在转换前或代替转换,请参阅OpenAPI / Swagger Validator。
我需要Zod架构,而不是普通TypeScript类型
请参阅JSON Schema to Zod Schema Converter — 粘贴一个架构(不是完整的OpenAPI文档)以获得运行时验证Zod架构及其推断的TypeScript类型。
我的规范被发送到任何地方吗?
否。解析和类型生成完全在您的浏览器中运行 — 在这里运行的相同代码也支持公共API和MCP工具,没有任何内容发出网络请求。
Use it from code
From 3 credits per callREST API
curl -X POST https://api.iotools.cloud/v1/tool/openapi-to-typescript-converter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"openapiText": "openapi: 3.0.3\ninfo:\n title: Pet Store\n versio…",
"includeComments": "false"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `openapi-to-typescript-converter` tool (OpenAPI Schema to TypeScript Types Converter) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.