小编Chr*_*lla的帖子

在通用 Typescript 类中实现单例

我有一个通用类型,它将作为事件系统中事件的基类。我们希望它们是单例,但它也是通用的,以便子类可以在事件触发时指定他们在回调中期望的参数类型。

我所拥有的看起来像这样:

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)

generics singleton design-patterns typescript

3
推荐指数
1
解决办法
5653
查看次数

标签 统计

design-patterns ×1

generics ×1

singleton ×1

typescript ×1