インデックスアクセス型 (indexed access types)
TypeScriptのインデックスアクセス型(indexed access type)は、プロパティの型や配列要素の型を参照する方法を提供します。
ts
typeA = {foo : number };typeFoo =A ["foo"];
ts
typeA = {foo : number };typeFoo =A ["foo"];
インデックスアクセス型の構文
インデックスアクセス型は、型に対してブラケット表記法を使います。
ts
オブジェクト型["プロパティ名"];配列型[number];
ts
オブジェクト型["プロパティ名"];配列型[number];
オブジェクト型とインデックスアクセス型
インデックスアクセス型にはユニオン型も使えます。
ts
typePerson = {name : string;age : number };typeT =Person ["name" | "age"];
ts
typePerson = {name : string;age : number };typeT =Person ["name" | "age"];
keyof
型演算子と組み合わせると、オブジェクトの全プロパティの型がユニオン型で得られます。
ts
typeFoo = {a : number;b : string;c : boolean };typeT =Foo [keyofFoo ];
ts
typeFoo = {a : number;b : string;c : boolean };typeT =Foo [keyofFoo ];
もしもオブジェクト型に存在しないプロパティ名を指定すると、コンパイラが警告を出します。
ts
typeAccount = {name : string };typeProperty 'password' does not exist on type 'Account'.2339Property 'password' does not exist on type 'Account'.T =Account ["password" ];
ts
typeAccount = {name : string };typeProperty 'password' does not exist on type 'Account'.2339Property 'password' does not exist on type 'Account'.T =Account ["password" ];
配列型とインデックスアクセス型
配列型の要素の型を参照するのにもインデックスアクセス型が使えます。要素の型を参照するには、配列型に[number]
をつけます。
ts
typeStringArray = string[];typeT =StringArray [number];
ts
typeStringArray = string[];typeT =StringArray [number];
要素がユニオン型の配列型に対しても使えます。
ts
typeMixedArray = (string | undefined)[];typeT =MixedArray [number];
ts
typeMixedArray = (string | undefined)[];typeT =MixedArray [number];
typeof
型演算子と組み合わせると、配列の値から要素の型を導くこともできます。
ts
conststateList = ["open", "closed"] asconst ;typeState = typeofstateList [number];
ts
conststateList = ["open", "closed"] asconst ;typeState = typeofstateList [number];
タプル型とインデックスアクセス型
インデックスアクセス型はタプル型の要素の型を参照するのにも使えます。タプル型の要素の型を参照するには、ブラケット記法に数値リテラル型を書きます。
ts
typeTuple = [string, number];typeT =Tuple [0];
ts
typeTuple = [string, number];typeT =Tuple [0];
学びをシェアする
TypeScriptのインデックスアクセス型は、プロパティや配列要素の型を参照できる
✏️構文1: オブジェクト型["プロパティ名"]
✏️構文2: 配列型[number]
🔑keyofと組み合わせると全プロパティの型が取れる
🧲typeofと組み合わせると配列値から要素型が取れる
『サバイバルTypeScript』より