TypeScript 中的泛型约束
private games:BaseGame[]=[];
public getGame<T extends BaseGame>(index:number=0):T{
return <T>this.games[index];
}
export class Test {
constructor() {
this.getState(StateDefault);
}
public getState<T extends State>(t: {new(): T; }):void{
// 不会调用 StateDefault 类的构造函数
console.log(t.prototype.constructor.name); // output: StateDefault
}
// 第二种写法
/*public getState<T extends State>(t: new() => T):void{
// 不会调用 StateDefault 类的构造函数
console.log(t.prototype.constructor.name); // output: StateDefault
}*/
}