【发布时间】:2020-12-30 11:31:46
【问题描述】:
假设我有
abstract class Foo {
}
class Bar1 extends Foo {
constructor(someVar) { ... }
}
class Bar2 extends Foo {
constructor(someVar) { ... }
}
我希望能够创建一个静态方法来创建最终类的实例(所有构造函数都具有相同的签名)。所以我想要类似的东西:
abstract class Foo {
public static someAction(someVar) {
const self = new this(someVar);
}
}
但这无法做到,因为Foo 是抽象的。这有可能吗?
更新
如果这些类有自己的模板呢?
abstract class Foo<M> {
}
class Bar1 extends Foo<SomeModel> {...}
现在我想让someAction 知道SomeModel 类型。我试过了
public static someAction<A, T extends Foo<A>>(this: new (someVar: any) => T, someVar: any): T {
const self = new this(someVar);
return self;
}
但是除非我专门做Bar1.someAction<SomeModel>("blah"),否则返回的结果是不可用的数据类型,即Bar1.someAction("blah")不知道数据类型
【问题讨论】:
-
您有没有找到更新问题的答案?
-
这正是我遇到的问题
标签: javascript typescript