Как создать типобезопасный Event Emitter в TypeScript?
- Event map:
interface Events { click: MouseEvent; change: string } on<K extends keyof Events>(event: K, handler: (payload: Events[K]) => void)emit<K extends keyof Events>(event: K, payload: Events[K])- Полное автодополнение имён событий и типов payload
- Ключ события связан с типом данных через indexed access type