2019.11.4
Swagger を使って API 定義を書いた後、型定義を出力したいなーと思い TypeScript のコード生成をやってみました。
お手軽に型ファイルを生成できそうだったのでこれを使ってみました。
GitHub - mstssk/sw2dts: Generates TypeScript definition file(d.ts) from swagger.json for edge cases.
swagger.yaml
のdefinitions
で定義されているモデルを抽出して型ファイルとして保存できます。
npm i -D sw2dts
試しに 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 は使い勝手が良かったです。