Emisores de eventos con tipado seguro en TypeScript

El EventEmitter de Node es una de las primitivas más utilizadas en JavaScript del lado del servidor. También es un campo minado para el refactoring: cada nombre de evento es una cadena de texto, cada payload es any, y nada te impide emitir un evento que nadie escucha o conectar un listener que espera una forma de datos incorrecta. TypeScript puede validar todo esto en tiempo de compilación, y la configuración es más sencilla de lo que la mayoría de los equipos supone.

La API por defecto no ofrece ninguna seguridad de tipos ni en los nombres de eventos ni en los payloads.