kingBook

导航

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
    }*/
}

posted on 2020-05-19 15:27  kingBook  阅读(747)  评论(0编辑  收藏  举报