问题涉及TypeScript输入问题。
这段代码
class Foo {
static classFoo() {
return new this();
}
}
class Bar extends Foo {
instanceBar() {}
}
Bar.classFoo().instanceBar();
导致错误:
Property' instanceBar'在' Foo'
类型中不存在
当然,这不是真的,因为调用this === Bar
时Bar.classFoo()
。在忽略类型错误的情况下,由于继承在ES6类中的工作原理,代码按预期工作。
为什么会这样?这是一个已知的bug吗?如何解决这个问题?
答案 0 :(得分:2)
这是known issue,目前的解决方法是
class Foo {
static classFoo<T extends Foo>(this: { new (): T } & typeof Foo): T {
return new this();
}
}