← 解説「インデックスアクセス型 — T[K] で型の一部を取り出す」に戻る
サンプルコードで身につける: インデックスアクセス型 — T[K] で型の一部を取り出す
解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1プロパティの型を1つ取り出す
インデックスアクセス型の最も素朴な形です。User["id"] と書くと、User 型の id プロパティの型(ここでは number)がそのまま取り出せます。角括弧の中に書いているのは文字列の値ではなく "id" というリテラル型です。
TypeScript
2キーのユニオンでまとめて取り出す
角括弧の中はリテラル型なので、"id" | "userName" のようなユニオンも書けます。結果は「各プロパティの型のユニオン」になり、keyof と組み合わせれば「全プロパティの値の型のユニオン」も作れます。型の中身を集合として取り出す感覚をつかみましょう。
TypeScript
3配列から要素の型を取り出す
配列の型に [number] でアクセスすると「要素の型」が取り出せます。as const を付けた配列と組み合わせると、配列の中身そのものがリテラル型のユニオンになります。選択肢の一覧を値として持ち、型はそこから導出するという実務の定番パターンです。
TypeScript
4ネストした型を深くたどる
角括弧は連続して書けるので、Order["customer"]["email"] のようにネストしたオブジェクト型の深い部分の型も取り出せます。API レスポンスのように階層の深い型から、必要な部分だけを別の場所で使いたいときに便利です。
TypeScript
5実務: APIレスポンス型から要素の型を導出する
APIレスポンスの items 配列の要素を処理する関数を書く実務例です。要素の型を ApiResponse["items"][number] で導出すれば、レスポンスの形が変わっても関数の引数型が自動で追従します。これがないと CartItem 型を手書きでもう1つ定義し、レスポンス型と二重管理することになります。
TypeScript