他の回答をまとめる:
オブジェクト
var test = {};
数値を新しいプロパティのキーとして使用すると、数値は文字列に変わります。
test[2300] = 'Some string';
console.log(test['2300']);
// Output: 'Some string'
同じ数値を使用してプロパティの値にアクセスすると、数値は再び文字列に変換されます。
console.log(test[2300]);
// Output: 'Some string'
ただし、オブジェクトからキーを取得する場合、キーは数値に戻されません。
for (var key in test) {
console.log(typeof key);
}
// Output: 'string'
地図
ECMAScript 6では、マップオブジェクト(ドキュメント、オブジェクトとの比較)を使用できます。コードがローカルで解釈されることを意図している場合、またはECMAScript 6の互換性テーブルが目的に合わせて十分に緑色に見える場合は、マップの使用を検討してください。
var test = new Map();
test.set(2300, 'Some string');
console.log(test.get(2300));
// Output: 'Some string'
良くも悪くも型変換は行われません:
console.log(test.get('2300'));
// Output: undefined
test.set('2300', 'Very different string');
console.log(test.get(2300));
// Output: 'Some string'