Roadmap › JavaScript (ES5 → ES2025) & TypeScript Basics › Module: Advanced and TypeScript
Lessons in this course (16)

14. Generators, iterators, Map/Set, WeakMap and Proxy

AdvancedMediumLesson 14 of 16
js
function* idGenerator() { let id = 1; while (true) yield id++; }
const ids = idGenerator();
ids.next().value;   // 1

const map = new Map([["a", 1]]);      // any key type, keeps insertion order, .size
const set = new Set([1, 2, 2, 3]);     // unique values → [...set] = [1, 2, 3]
new Set([1, 2]).union(new Set([2, 3])); // ES2025 Set methods

const meta = new WeakMap();            // keys must be objects; doesn't prevent garbage collection
meta.set(domNode, { clicks: 0 });

const validator = new Proxy({}, {
  set(target, key, value) {
    if (key === "age" && typeof value !== "number") throw new TypeError("age must be a number");
    target[key] = value;
    return true;
  },
});