オブジェクトを弱参照で保持するコレクション。GCを妨げない
const cache = new WeakMap<object, string>();
let obj = { id: 1 };
cache.set(obj, 'value');
cache.get(obj); // 'value'
obj = null as any; // GCされるとキャッシュも自動削除
// WeakSet
const seen = new WeakSet<object>();
seen.add(domNode); // DOM要素の状態管理にメモリリークを防ぎながらオブジェクトにメタデータを付与したい場合に使う。iterableでないためfor...ofは使えない。