重複なし集合・任意キーの辞書を効率的に扱うコレクション
// ── Set: 重複を自動除去するコレクション ─────────────────
// 配列の重複を取り除くのに便利
const nums = [1, 2, 2, 3, 3, 3, 4];
const unique = [...new Set(nums)]; // [1, 2, 3, 4]
const set = new Set<string>();
set.add('apple');
set.add('banana');
set.add('apple'); // 重複しても追加されない
console.log(set.size); // 2
console.log(set.has('apple')); // true ← 存在チェック
set.delete('banana'); // 削除
// ── Map: キーに任意の型が使えるオブジェクト ───────────
// 通常のオブジェクトはキーが文字列のみだが、Map はオブジェクトもキーにできる
const scores = new Map<string, number>();
scores.set('田中', 85);
scores.set('鈴木', 92);
scores.set('佐藤', 78);
console.log(scores.get('鈴木')); // 92
console.log(scores.has('田中')); // true
console.log(scores.size); // 3
// Map はイテレーション(繰り返し)がしやすい
scores.forEach((score, name) => {
console.log(name + ': ' + score + '点');
});Setは配列の重複除去に、MapはオブジェクトキーにNumber/Object等を使いたい場合に便利。MapはObjectより挿入順が保証され.sizeが使える。