Typsichere Event-Emitter in TypeScript

Der EventEmitter von Node gehört zu den meistgenutzten Bausteinen in serverseitigem JavaScript. Er ist aber auch ein Minenfeld für Refactorings: Jeder Eventname ist ein String, jede Payload ist any, und nichts hindert dich daran, ein Event zu emittieren, auf das niemand hört, oder einen Listener anzuschließen, der die falsche Struktur erwartet. TypeScript kann all das bereits zur Kompilierzeit erzwingen, und die Einrichtung ist einfacher, als die meisten Teams annehmen.

Die Standard-API bietet keinerlei Typsicherheit für Eventnamen oder Payloads.