Record<Keys, Type>
Record<Keys, Type>
はプロパティのキーがKeys
であり、プロパティの値がType
であるオブジェクト型を作るユーティリティ型です。
Record<Keys, Type>の型引数
Keys
オブジェクトのプロパティーキーを指定します。Keys
に代入できる型は、string
、number
、symbol
とそれぞれのリテラル型です。
Type
オブジェクトのプロパティの値の型を指定します。任意の型が代入できます。
Recordの使用例
キーがstring
で値がnumber
のインデックス型を定義する。
ts
typeStringNumber =Record <string, number>;constvalue :StringNumber = {a : 1,b : 2,c : 3 };
ts
typeStringNumber =Record <string, number>;constvalue :StringNumber = {a : 1,b : 2,c : 3 };
キーがfirstName
、middleName
、familyName
で、値が文字列になるオブジェクト型を定義する。
ts
typePerson =Record <"firstName" | "middleName" | "lastName", string>;constperson :Person = {firstName : "Robert",middleName : "Cecil",lastName : "Martin",};
ts
typePerson =Record <"firstName" | "middleName" | "lastName", string>;constperson :Person = {firstName : "Robert",middleName : "Cecil",lastName : "Martin",};
関連情報
📄️ インデックス型
TypeScriptで、オブジェクトのフィールド名をあえて指定せず、プロパティのみを指定したい場合があります。そのときに使えるのがこのインデックス型(index signature)です。たとえば、プロパティがすべてnumber型であるオブジェクトは次のように型注釈します。
📄️ Mapped Types
インデックス型では設定時はどのようなキーも自由に設定できてしまい、アクセス時は毎回undefinedかどうかの型チェックが必要です。入力の形式が決まっているのであればMapped Typesの使用を検討できます。
📄️ Map<K, V>
MapはJavaScriptの組み込みAPIのひとつで、キーと値のペアを取り扱うためのオブジェクトです。Mapにはひとつのキーについてはひとつの値のみを格納できます。