/** * Extended Map that automatically creates item if it does not exist. * Usage: * const map = new AutofillMap(); * map.getOrCreate('key', () => []); */ export class AutofillMap extends Map { getOrCreate(key: K, createFn: (key: K) => V) { let item = this.get(key); if (!item) { item = createFn(key); this.set(key, item); } return item; } }