Record<Keys, Type>
Record<Keys, Type>はプロパティのキーがKeysであり、プロパティの値がTypeであるオブジェクトの型を作るユーティリティ型です。
Record<Keys, Type>の型引数
Keys
オブジェクトのプロパティーキーを指定します。Keysに代入できる型は、string、number、symbolとそれぞれのリテラル型です。
Type
オブジェクトのプロパティの値の型を指定します。任意の型が代入できます。
Recordの使用例
キーがstringで値がnumberのインデックス型を定義する。
tstypeStringNumber =Record <string, number>;constvalue :StringNumber = {a : 1,b : 2,c : 3 };
tstypeStringNumber =Record <string, number>;constvalue :StringNumber = {a : 1,b : 2,c : 3 };
キーがfirstName、middleName、familyNameで、値が文字列になるオブジェクトの型を定義する。
tstypePerson =Record <"firstName" | "middleName" | "lastName", string>;constperson :Person = {firstName : "Robert",middleName : "Cecil",lastName : "Martin",};
tstypePerson =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にはひとつのキーについてはひとつの値のみを格納できます。