2
Typescriptで標準的な抽象ファクトリパターンを実装しようとしていますが、コンパイラは協調的ではありません。ここに私のコードの簡易版は、次のとおりです。Typescriptで抽象ファクトリパターンを作成するにはどうすればよいですか?
abstract class Model { }
class User extends Model { }
abstract class ModelFactory<T extends typeof Model> {
constructor(private modelConstructor: T) {}
public create(): T {
return new (this.modelConstructor)(); // ERROR HERE
}
}
class UserFactory extends ModelFactory<typeof User> {
constructor() {
super(User);
}
}
let user: User;
user = new UserFactory().create();
私はTSC 2.1を使用してコンパイルする場合しかし、私は上記に示したラインで、次のエラーを取得:
model.ts(8,13): error TS2511: Cannot create an instance of the abstract class 'Model'.
私は型の安全性を削除し、変換した場合
return new (this.modelConstructor as any)();
コードはエラーなしでコンパイルされます。しかし、これは残念です。キャストを使用せずにこのコードをコンパイル可能にする方法はありますか?そうでない場合は、どうしてですか?
ニースを!その構文について知らなかった。 –