Dev Study
← 解説「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