swagger で定義した型から TypeScript のコードを生成する

November 04, 2019

Swagger を使って API 定義を書いた後、型定義を出力したいなーと思い TypeScript のコード生成をやってみました。

sw2dts を使ってみる

お手軽に型ファイルを生成できそうだったのでこれを使ってみました。

GitHub - mstssk/sw2dts: Generates TypeScript definition file(d.ts) from swagger.json for edge cases.

swagger.yamldefinitionsで定義されているモデルを抽出して型ファイルとして保存できます。

インストール

npm i -D sw2dts

ts ファイルの生成

試しに Swagger Petstore を変換してみます。

Swagger Petstore

変換コマンドはこんな感じです。

npx sw2dts swagger.yaml > model.ts

生成された ts ファイルはこちらです。

export interface ApiResponse {
    code?: number; // int32
    type?: string;
    message?: string;
}
export interface Category {
    id?: number; // int64
    name?: string;
}
export interface Order {
    id?: number; // int64
    petId?: number; // int64
    quantity?: number; // int32
    shipDate?: string; // date-time
    /**
     * Order Status
     */
    status?: "placed" | "approved" | "delivered";
    complete?: boolean;
}
export interface Pet {
    id?: number; // int64
    category?: Category;
    /**
     * example:
     * doggie
     */
    name: string;
    photoUrls: string[];
    tags?: Tag[];
    /**
     * pet status in the store
     */
    status?: "available" | "pending" | "sold";
}
export interface Tag {
    id?: number; // int64
    name?: string;
}
export interface User {
    id?: number; // int64
    username?: string;
    firstName?: string;
    lastName?: string;
    email?: string;
    password?: string;
    phone?: string;
    /**
     * User Status
     */
    userStatus?: number; // int32
}

お手軽に型定義だけを生成したかったので sw2dts は使い勝手が良かったです。