keyofとインデックスアクセス型(入門)
keyofでプロパティ名のunionを作り、インデックスアクセス型(T[K] / T["prop"])でプロパティの型を安全に取得します
「keyofとインデックスアクセス型(入門)」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン3/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全3レッスンが含まれています。
導入
目標:keyof(プロパティ名のユニオン)とインデックスアクセス(T[K])を使ってプロパティの型を読み取り、より安全なヘルパーを作成します。
keyof
keyofは、型のプロパティ名のユニオンを生成します(例:"id" | "name" | "email")。
interface User {
id: number;
name: string;
email?: string;
}
type UserKeys = keyof User; // "id" | "name" | "email"keyof typeof
keyof typeofを使うと、値(オブジェクト)からキーを取得して、パラメーターの型付けに利用できます。
const SETTINGS = {
theme: "dark",
lang: "en",
} as const;
type SettingKey = keyof typeof SETTINGS; // "theme" | "lang"インデックスアクセス
インデックスアクセスはプロパティの型を返します。User["name"]はstringになります。
interface User {
id: number;
name: string;
email?: string;
}
type NameType = User["name"]; // string
getPropertyヘルパー
keyofとK extends keyof Tを組み合わせると、キーを制限し、正確なT[K]型を返せます。
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
const u = { id: 1, name: "Ada" };
const v1 = getProperty(u, "name"); // string
const v2 = getProperty(u, "id"); // number
console.log(v1.toUpperCase(), v2.toFixed(0));ヒント
ヒント:
- オブジェクトからキーを取得する場合は、keyof typeofを優先してください。
- モデルを重複して定義せず、プロパティの型を反映するためにT[K]を使ってください。
- 文字列で指定するキーは避け、安全性のためにユニオンを活用してください。
インデックスアクセスの確認
クイックチェック:T[K]は何を表しますか?
まとめ
まとめ:keyofはキーのユニオンを生成し、keyof typeofは値からキーを導出し、T[K]はプロパティの型を読み取ります。安全なヘルパーに最適です。
よくある質問
「keyofとインデックスアクセス型(入門)」レッスンは無料ですか?
はい。「keyofとインデックスアクセス型(入門)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全3レッスンが含まれています。
「keyofとインデックスアクセス型(入門)」で何を学びますか?
keyofでプロパティ名のunionを作り、インデックスアクセス型(T[K] / T["prop"])でプロパティの型を安全に取得します ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
TypeScript Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/3です。
「keyofとインデックスアクセス型(入門)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このTypeScript Academyレッスンでコードを書いて実行できますか?
はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ジェネリック関数と制約(extends、デフォルトパラメーター)
- Partial、Readonly、Record、Pick、Omit
- keyofとインデックスアクセス型(入門)