如何在TypeScript中调用类型参数的静态方法

时间:2014-06-19 15:40:52

标签: typescript

是否可以调用类型参数的静态方法?例如,我有以下代码:

class BaseA1 {
  public static getString(): string {
    return "A1";
  }
}

class A<A1 extends BaseA1> {
  constructor() {
    var name = A1.getString(); // <== error [the property getString does not exist ...]
  }
}

如何正确调用静态方法?是否有可能,如果不是最好的替代方式?谢谢,亲切。

1 个答案:

答案 0 :(得分:2)

静态方法属于类类型,而不属于实例。特别是,如果A1定义了它自己的getString,则它不会是重写方法,而是阴影方法。

因此,您想要做的事情唯一的情况是,您希望依赖于从其基本类型中隐藏方法的类型。然而,这将是非常臭的代码(换句话说:不要这样做)。

调用BaseA1.getString()或者,如果需要在子类中覆盖它的方法,请将其作为正确的实例方法。看到你的例子返回子类的名称,我倾向于认为你正试图实现一些可疑的东西,并建议你问另一个问题,你想解决的根本问题是什么,而不是询问如何制作目前的设计工作。

您可以找到关于此here的说明;它是关于Java而不是Typescript,但这个想法是一样的。

相关问题