ZeroTool Workbench
OpenAPI → TypeScript ジェネレーター
OpenAPI 3.0/3.1 仕様(YAML/JSON)からブラウザで TypeScript インターフェースを生成。$ref・oneOf/allOf・enum・nullable 対応、Zod スキーマも同時出力可。
使い方
- OpenAPI 3.0.x または 3.1.x のドキュメント(YAML / JSON)を左側パネルに貼り付けます。
- 入力中は 300 ms デバウンスでリアルタイム生成されます。
- 必要に応じて ルート名前空間 の変更、全プロパティを optional 化、path 型の追加、Zod スキーマの同時出力を切り替えられます。
- コピー ボタンで TypeScript 出力全文をコピーします。
生成される内容
- components/schemas:各スキーマが
export interfaceまたはexport typeになります。オブジェクトは interface、プリミティブ / union / enum / intersection は type alias として出力されます。 - $ref:
#/components/schemas/...への参照は型名で解決され、仕様の宣言順を維持します。 - oneOf / anyOf:union 型
A | B | C。allOf は intersectionA & Bになります。 - enum:文字列または数値のリテラル union。
- nullable:3.0 の
nullable: trueも 3.1 のtype: ['X', 'null']もX | nullに変換。 - format ヒント:
format: date-timeには ISO 8601 の JSDoc を付与し、format: binaryはBlobになります。 - additionalProperties:インデックスシグネチャまたは
Record<string, T>。
Path 型(任意)
path 型を含める を有効にすると、各オペレーションに型エンベロープが生成されます:
export namespace Components {
export namespace GetPetById {
export interface PathParameters {
id: number;
}
export type Response200 = Pet;
}
}
operationId がない場合は method と path から合成します(例:GetPetsId)。
Zod スキーマ(任意)
Zod スキーマを含める を有効にすると、各コンポーネントに対して XSchema を並行して出力します:
import { z } from 'zod';
export const PetSchema = z.object({
id: z.number().int(),
name: z.string(),
status: z.enum(["available", "pending", "sold"]),
});
OpenAPI 仕様ではなく既存の手書き TS 型から Zod を作りたい場合は TypeScript → Zod を使ってください。
関連ツール
- OpenAPI バリデーター — 型生成前に仕様を検証。
- JSON → TypeScript — 仕様はなく JSON レスポンス例だけがある場合に。
- JSON → Zod スキーマ — 単一の JSON サンプルから Zod を生成。
FAQ
対応している OpenAPI のバージョンは?
3.0.x と 3.1.x の両方に対応します。OpenAPI 3.1 の `type: ['string', 'null']` は `string | null` として、OpenAPI 3.0 の `nullable: true` も同様に解釈されます。
Swagger 2.0 は使えますか?
設計上、Swagger 2.0 は非対応です。先に editor.swagger.io(Swagger Editor の内蔵コンバーター)で OpenAPI 3.x に移行してから貼り付けてください。
リモート $ref は解決されますか?
`#/components/schemas/...` という内部参照のみ解決します。外部 URL やファイルパスへの $ref は取得しません。参照先スキーマをインライン化するか、openapi-typescript CLI を使ってください。
仕様はサーバーに送られますか?
送られません。パース、$ref 解決、TypeScript 生成のすべてがブラウザ内で完結します。バックエンドなし、仕様内容のテレメトリ送信もありません。
Zod スキーマも一緒に得られますか?
はい。**Zod スキーマを含める** をオンにすると、TypeScript インターフェースに加えて `z.object({...})` も出力します。静的型と一致するランタイム検証が必要な場合に便利です。
「path 型を含める」は何をしますか?
各オペレーションごとに名前空間を生成し、`PathParameters`・`QueryParameters`・`RequestBody`・`Response200` / `Response201` などを公開します。DTO インターフェースだけ欲しい場合はオフのままで構いません。