Sikau

TypeScript · Day 19 · about 35 min

Project: Typed event bus

Generics that guard every event.

Messages with matching data

Apps announce events: "lesson done" with a lesson id, "level up" with a level number. A typed event bus makes sure every event name comes with the right data — on both the sending and receiving side.

An event map

type Events = {
  lessonDone: { id: string };
  levelUp: { level: number };
};

function emit<K extends keyof Events>(name: K, data: Events[K]) {
  console.log(name, data);
}
emit("levelUp", { level: 3 });
emit("levelUp", { id: "d01" });
emit("badge", {});

The rest of this lesson

  • One map, two sides checkedexplain
  • Storing listeners with genericsexplain
  • What's the data type?predict
  • Bus piecesmatch
  • Build the buschallenge
  • Badge quizquiz
  • Unit 3 complete!recap

Continue this lesson free — run real code in your browser

Continue with Google

See all 24 lessons of TypeScript