Collections
Map: number の 1 と string の "1" は別のキー
Map はオブジェクトのプロパティ名への暗黙変換をせず、キーの型と値をそのまま区別します。
SourcemapKeyTypes.ts
Node.js 22
export function typedKeys(): Map<number | string, string> {
return new Map<number | string, string>([
[1, "number"],
["1", "string"],
]);
}TestmapKeyTypes.test.ts
Node.js 22
import assert from "node:assert/strict";
import test from "node:test";
import { typedKeys } from "../../src/map/mapKeyTypes.js";
test("Mapはnumberとstringの同じ見た目のキーを区別する", () => {
const values = typedKeys();
assert.equal(values.size, 2);
assert.equal(values.get(1), "number");
assert.equal(values.get("1"), "string");
});01Assertion
このテストで確認できること
- number の 1 をキーに保存できる
- string の "1" を別キーとして保存できる
動的なキーを扱うなら Record より Map が適切なことがあります。特に key type を区別する必要がある場合に有用です。
OBSERVED RESULT
expected: map.size → 2
actual: 2