← 解説「keyof — キーの一覧を型にする」に戻る
サンプルコードで身につける: keyof — キーの一覧を型にする
解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1keyof の結果はキー名のユニオン
keyof がどんな型を作るのかを変数で直接確かめる、最も素朴な例です。keyof Book は "title" | "author" | "price" というリテラル型のユニオンになり、それ以外の文字列は代入できません。
TypeScript
2キー名の引数を keyof で守る
「オブジェクトとキー名を受け取って値を読む」関数の引数を keyof にすると、キー名の打ち間違いがコンパイルエラーになります。string で受けると素通りしてしまう undefined 事故を型で防ぐ、keyof の代表的な使い方です。
TypeScript
3キーの配列を作ってループする
(keyof Profile)[] と書けば「Profile のキーだけが入る配列」になります。オブジェクトの中身を順番に表示するような処理で、キー名のユニオンを手書きせずに済み、型の変更にも自動で追従します。
TypeScript
4ジェネリクスと組む getValue
K extends keyof T という制約で「T に実在するキーだけ」を受け付け、戻り値 T[K] でそのキーの値の型まで正確に伝える形です。どんなオブジェクトにも使える汎用関数なのに、戻り値が number や string に正しく推論されます。
TypeScript
5一覧から1列だけ抜き出す pluck
オブジェクトの配列から指定キーの値だけを集める、表データの「列の抽出」にあたる実務ユーティリティです。keyof のおかげで存在しないキーは渡せず、抜き出した配列の要素型まで自動で決まります。
TypeScript