我有一个通用类型,它将作为事件系统中事件的基类。我们希望它们是单例,但它也是通用的,以便子类可以在事件触发时指定他们在回调中期望的参数类型。
我所拥有的看起来像这样:
export interface IEvent { }
export interfact IEventArg { }
export abstract class Event<TEvent extends IEvent, TEventArg extends IEventArg> implements IMessageHandler {
private static s_instance : any;
private static s_isInitializing : boolean;
constructor() {
if (!Event.s_isInitializing)
throw new Error ("Use the GetInstance method to get this class instance.");
}
public static GetInstance<TEvent extends IEvent, TEventArg extends IEventArg>(type: { new() : T; }) : TEvent {
if (!s_instance) {
s_isInitializing = true;
s_instance = new type();
s_isInitializing = false; …Run Code Online (Sandbox Code Playgroud)