これは私がしたいことです:
abstract class AbBase
static newDerived<T extends typeof AbBase>(this: T) {
return class A extends this {
//...
}
}
基本的には、newDerivedを非抽象実装からのみ呼び出すようにします。
しかし、私はextends this
の部分でこのエラーが発生します:
"Type 'T'はコンストラクタ関数型ではありません。 Tが 'new(... args:any [])=> AbBase'型に制約されることを意味しましたか?
しかし、もし私が
static newDerived<T extends typeof AbBase>(this: new (...args: any[]) => AbstractInstanceType<T>) {
"Baseコンストラクタの戻り値の型 'AbstractInstanceType'は、静的に知られているメンバーを持つオブジェクト型のオブジェクト型または交差ではありません。