JSONからTypeScript型生成

JSONの構造からTypeScriptの型定義を作るツール。APIレスポンスの型付けやモックデータの型作成に使える。

JSONからTypeScript型生成

223文字
TypeScript
export interface Root {
  id: number
  name: string
  email: null
  tags: string[]
  profile: Profile
  posts: PostsItem[]
}

export interface PostsItem {
  id: number
  title: string
  draft?: boolean
}

export interface Profile {
  age: number
  city: string
}

使い方

  1. JSONを入力する。
  2. 必要に応じてルートの型名を変更する。
  3. 生成された型をコピーしてコードに貼り付ける。

こんな用途に

  • APIレスポンスのサンプルから型定義を作りたいとき。
  • 設定ファイルやモックデータに型を付けたいとき。
  • 深くネストしたJSONの構造を把握したいとき。

仕組み

  • ネストしたオブジェクトはキー名をPascalCaseにした別のinterfaceとして出力。
  • 配列の要素が複数の型を持つ場合はユニオン型にまとめる。
  • 配列内のオブジェクトはキーを統合し、一部の要素にしかないキーはオプショナル(?)にする。
  • 生成はブラウザ内で完結し、サーバーへ送信しない。

確認ポイント

  • nullしか現れないキーはnull型になる。実際の型を手で追記する。
  • 空配列はunknown[]になる。要素を1つ入れたJSONで生成すると型が付く。
  • 配列に複数の要素を入れると、オプショナルなキーを判定できる。

手元でやるには

JSONから型を生成

必要環境: Node.js
npx quicktype --lang ts --just-types data.json

よくある質問

typeではなくinterfaceで出力するのはなぜ?

オブジェクトの型は拡張しやすいinterfaceで出力する。ルートが配列やプリミティブの場合はtypeで出力する。

日付文字列はDate型になる?

ならない。JSONの日付は文字列のため、string型として出力する。

関連ツール