2016-05-15 25 views
1

ClassReturnerとTheClassから継承する新しいクラスを作成できる構造を設定したいと思いますが、エラーが発生しています。抽象クラス抽象クラスBの新しいインスタンスをインスタンス化できません

abstract class ClassReturner <TClass extends TheClass> { 
    private returningClass : TClass; 

    constructor (r : TClass){ 
     this.returningClass = r; 
    } 

    public getAnotherClass(){ 
     //ERROR BELOW: Cannot use 'new' with an expression whose type lacks a call or construct signature. 
     return new this.returningClass("John Doe"); 

    } 
} 

abstract class TheClass { 
    private whoiam: string; 

    constructor (w : string){ 
     this.whoiam = w; 
    } 

} 

なぜこれは許可されていませんか? TClassTheClassに拡張されていても、コンストラクタがあることを確認してはいけませんか?

答えて

2

いいえ、returningClass: TClassは、TheClassを拡張するクラスのインスタンスです。
ctorを取得するには、{ new (name: string): TheClass }が必要です。

だから、これはあなたのために働く必要があります。

Code in playground

関連する問題