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