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();
含有隐式传参this:new()=>T
的一个操作
这样可以执行new this()的操作
(<any>this).instance
表示Singleton
的instance
最新评论