TypeScript - 連想配列

公開日:2019-02-06 更新日:2019-05-14

1. 概要

連想配列の使い方です。

let 変数名 = {};
変数名[キー] = 値;

2.1 サンプル

let data = {};
data["key1"] = 1;

//console.log(data.key1);    //ビルドエラー
//console.log(data.key999);  //ビルドエラー
console.log(data["key1"]);   //1
console.log(data["key999"]); //undefined

2.2 サンプル

//オブジェクトリテラルを代入した場合は、「.」でもアクセスできる
let data = { key1: 1, "key2": 2 };
console.log(data.key1);    //1
console.log(data.key2);    //2
console.log(data["key1"]); //1
console.log(data["key2"]); //2

//キー一覧の出力
for (var key in data) {
	console.log(key); //key1 key2
}

2.3 サンプル - インデックスシグネチャ

連想配列のキーが number の場合は、値の型を number に制限します。
値に string を入れるとビルドエラーになります。
但し、キーが string の場合は、この制限を受けなくなるため要注意。

var data: { [key: number]: number; } = {};
data[0]   = 1;
//data[1] = "abc"; //ビルドエラー
data["a"] = 2;
data["b"] = "def";
console.log(data[0]);   //1
console.log(data["a"]); //2
console.log(data["b"]); //def

2.4 サンプル - インデックスシグネチャ

連想配列のキーが string の場合は、値の型を number に制限します。
値に number を入れるとビルドエラーになります。
但し、キーが number の場合は、この制限を受けなくなるため要注意。

var data: { [key: string]: number; } = {};
data[0]     = 1;
data["a"]   = 2;
//data["b"] = "abc"; //ビルドエラー
console.log(data[0]);   //1
console.log(data["a"]); //2
console.log(data["b"]); //undefined