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

最終更新

役に立ちましたか?