我具有观察者模式的此实现:
type EventHandler = <T extends Event>(event: T) => void;
interface Subscriber<T> {
event: EventEnum;
callback: EventHandler<T>;
}
我想要这个Subscriber
接口,以便可以声明,例如:
interface EventEmitter {
Xsubscribers: Array<Subscriber<EventX>>;
Ysubscribers: Array<Subscriber<EventY>>
addEventXListener: (callback: EventHandler<EventX>) => void;
addEventYListener: (callback: EventHandler<EventY>) => void;
}
当我这样做时,出现以下错误:
错误TS2315:类型'EventHandler'不是通用的。
您必须在之前添加通用名称=
:
type EventHandler<T extends Event> = (event: T) => void;
interface Subscriber<T extends Event> {
// event: EventEnum;
callback: EventHandler<T>;
}
type EventY = Event;
type EventX = Event;
interface EventEmitter {
Xsubscribers: Array<Subscriber<EventX>>;
Ysubscribers: Array<Subscriber<EventY>>
addEventXListener: (callback: EventHandler<EventX>) => void;
addEventYListener: (callback: EventHandler<EventY>) => void;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句