2017-11-21 8 views
0

私は、その関数の1つでは、自分のインスタンスを作成する必要がある抽象クラスを持っています。明示的に継承されたクラスのnew this()は、抽象クラスではなく継承されたクラスの新しいインスタンスを作成します。抽象クラスの新しいエラーを無視しない

技術的に私は抽象クラスの新しいインスタンスを作成しているため(または、クラスを直接使用した場合)、Typescriptのエラーはnew this()です。

エラーを無視できますか?私は抽象クラスのすべてのニュースではなく、その行だけを無視したいと思います。

クラス定義からabstractを削除すると、typescriptはうれしくなり、コードは意図したとおりに動作します。だからここで唯一の問題は、タイスクリプトが幸せでないということです。あなたが正しい、それは抽象クラスではありません、それをインスタンス化する必要がある場合は

+1

を使用することができますか?これは抽象の定義です。それで、なぜ新しいインスタンスが必要な場合は抽象として宣言するのが適切だと思いますか? –

+0

私は抽象クラスのインスタンスを作成しません。それを継承するものだけです。すべての継承されたクラスでクラスの新しいインスタンスを作成する必要がある関数を宣言しなければならない場合は、継承されたクラスを使用するオブジェクトを無効にします。 – Arcath

答えて

1

あなたはgetPrototypeOf

abstract class Parent { 
    replicate(): this { 
     return new (Object.getPrototypeOf(this).constructor)(); 
    } 
} 

class Child extends Parent {} 

let c = (new Child).replicate(); 

console.log(c); // Child {} 
+0

それは動作します!ありがとう。 – Arcath

関連する問題