Deviopath › TypeScript

Typed Event Emitter

Hard · Classes

Implement Emitter<Events>, where Events maps event names to payload types, so emit("login", payload) only accepts the right payload type.

- on(event, fn) registers a listener. Registering the same function twice means it is called twice.

- once(event, fn) registers a listener that is removed right after its first call.

- off(event, fn) removes every registration of fn for that event.

- emit(event, payload) calls the listeners of that event in registration order and returns how many listeners were called.

The driver runEmitter(ops) is already written. Listeners are identified by ids; each listener writes "<id>:<payload>" to a log, and every emit writes "<event> -> <count>" after its listeners ran. The log is returned.

Next: Typed Memoize with Stats