ゲームを作成してるのですが、イベント管理のために以下のようなEventDispatcherを作成したのですが、イベントの受け渡しに使うGameEventクラスのtargetにも型付けを行いたいです。
複数の型のtargetがあるのでジェネリクスなどを用いてみましたがうまくいきませんでした。
いい感じに型付けするにはどうすればいいでしょうか
typescript
1type cb = (event: GameEvent) => void; 2 3export class EventDispatcher { 4 public _eventListeners: { [s: string]: cb[] } = {}; 5 6 addEventListener(type: string, callback: cb): void { 7 if (this._eventListeners[type] == undefined) { 8 this._eventListeners[type] = []; 9 } 10 11 this._eventListeners[type].push(callback); 12 } 13 dispatchEvent(type: string, event: GameEvent): void { 14 const listeners = this._eventListeners[type]; 15 if (listeners != undefined) 16 listeners.forEach((callback) => callback(event)); 17 } 18} 19export class GameEvent { 20 constructor(public target: any) {}
回答1件
あなたの回答
tips
プレビュー