APIレスポンスからTypeScriptの型を作る

実際のJSONペイロードはあるのに、.tsファイルは空。フィールド名を手で写す代わりに、インターフェースの下書きを推論させます。

このガイドで使う道具

やりたいこと

新しいエンドポイントがネストしたオブジェクト(ユーザー・ロール・タイムスタンプ)を返してくる。消費側のコードを書く前にTypeScriptの型が必要です。ペイロードが大きいと、フィールド名を手で写すのは遅くて間違えやすい作業です。

具体例

{"user": {"name": "Ada", "roles": ["admin"]}} を貼ると、name: string と roles: string[] を持つ User インターフェースと、user フィールドが User 型の Root インターフェースの2つが出ます。ネストしたオブジェクトはそれぞれ名前付きインターフェースになり、配列は string[] のような要素型か、型が混ざるサンプルではユニオンになります。

配列の各アイテムのように同じ構造が2回出てくる場合は1つのインターフェースにまとめるので、出力はコンパクトに保たれます。

コミット前に下書きを確認する

生成された型は出発点であって正解ではありません。よくある修正は3つ:サンプルでnullだった値はnull型のままなので実際の型に広げる、このサンプルに無いキーは出てこないのでoptionalで足す、空配列からのany[]には実際の要素型を入れる、です。

  • 識別子として不正なキー("user-id"・"first name")は引用符付きで出ます。TypeScriptとして有効です。
  • JSONが不正なら先にJSONフォーマッターで直してから生成してください。