在继承的静态类方法中错了

时间:2017-05-22 10:11:17

标签: typescript

问题涉及TypeScript输入问题。

这段代码

class Foo {
  static classFoo() {
    return new this();
  }
}

class Bar extends Foo {
  instanceBar() {}
}


Bar.classFoo().instanceBar();

导致错误:

  

Property' instanceBar'在' Foo'

类型中不存在

当然,这不是真的,因为调用this === BarBar.classFoo()。在忽略类型错误的情况下,由于继承在ES6类中的工作原理,代码按预期工作。

为什么会这样?这是一个已知的bug吗?如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是known issue,目前的解决方法是

class Foo {
  static classFoo<T extends Foo>(this: { new (): T } & typeof Foo): T {
    return new this();
  }
}