オブジェクト配列のJSONをTypeScript型に変換する

オブジェクトを含むJSON配列を型付き要素を持つTypeScript配列に変換する方法を学びます。同種配列と異種配列の両方をカバー。

Basic Conversions

詳細な説明

TypeScriptでの配列の型付け

JSONがオブジェクトの配列を含む場合、コンバーターはすべての要素を検査して配列アイテムの統一型を決定します。

JSON例

{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "editor" },
    { "id": 3, "name": "Carol", "role": "viewer" }
  ]
}

生成されるTypeScript

interface User {
  id: number;
  name: string;
  role: string;
}

interface Root {
  users: User[];
}

要素型の推論方法

コンバーターはすべての配列要素をマージして単一の型を作成します。すべての要素が同じキーと値の型を持つ場合、クリーンなinterfaceが生成されます。要素が異なる場合、コンバーターはユニオン型を取ります:

[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob", "email": "bob@test.com" }
]

ここではemailが一部の要素にのみ存在するため、オプショナルになります:

interface Item {
  id: number;
  name: string;
  email?: string;
}

プリミティブ配列

プリミティブの配列は直接マッピングされます:

JSON TypeScript
[1, 2, 3] number[]
["a", "b"] string[]
[true, false] boolean[]
[1, "two", true] (number | string | boolean)[]

ネストされた配列

配列の配列はT[][]になります。例えば、行列[[1,2],[3,4]]number[][]になります。

ほとんどのAPIリストエンドポイントはリソースのページネーション付き配列を返すため、配列の操作は最も頻繁な変換タスクの一つです。

ユースケース

ページネーション付きAPIエンドポイントからユーザーリストを取得し、.map()や.filter()で安全に反復処理できるよう型付けする必要がある場合に使用します。

試してみる — JSON to TypeScript

フルツールを開く