Typesafe Event Emitter
Традиційно в Node.js і традиційному JavaScript ви маєте єдиний джерело подій. Цей джерело подій внутрішньо відстежує слухача для різних типів подій
const emitter = new EventEmitter();
// Emit:
emitter.emit('foo', foo);
emitter.emit('bar', bar);
// Listen:
emitter.on('foo', (foo)=>console.log(foo));
emitter.on('bar', (bar)=>console.log(bar));По суті, EventEmitter внутрішньо зберігає дані у формі відображених масивів:
{foo: [fooListeners], bar: [barListeners]}Замість цього, задля безпеки типу event, ви можете створити емітер на тип події:
const onFoo = new TypedEvent<Foo>();
const onBar = new TypedEvent<Bar>();
// Emit:
onFoo.emit(foo);
onBar.emit(bar);
// Listen:
onFoo.on((foo)=>console.log(foo));
onBar.on((bar)=>console.log(bar));Це має такі переваги:
Типи подій легко знайти як змінні.
Змінні джерела подій легко переробляються незалежно.
Тип безпеки для структур даних подій.
Reference TypedEvent
Last updated