Typescript 單例模式基類,模板方法可智能類型提示

class Singleton{
    static getInstance<T extends {}>(this: new () => T): T {
        if(!(<any>this).instance){
            (<any>this).instance = new this();
        }
        return (<any>this).instance;
    }
}

class Bar extends Singleton {
    desc: string;
    public print(){
        Log.log(this.desc);
    }
}

Bar.getInstance().desc = "single";
Bar.getInstance().print();
Bar.getInstance().print();
相關文章
相關標籤/搜索