是否可以调用类型参数的静态方法?例如,我有以下代码:
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 ...]
}
}
如何正确调用静态方法?是否有可能,如果不是最好的替代方式?谢谢,亲切。
答案 0 :(得分:2)
静态方法属于类类型,而不属于实例。特别是,如果A1
定义了它自己的getString
,则它不会是重写方法,而是阴影方法。
因此,您想要做的事情唯一的情况是,您希望依赖于从其基本类型中隐藏方法的类型。然而,这将是非常臭的代码(换句话说:不要这样做)。
调用BaseA1.getString()
或者,如果需要在子类中覆盖它的方法,请将其作为正确的实例方法。看到你的例子返回子类的名称,我倾向于认为你正试图实现一些可疑的东西,并建议你问另一个问题,你想解决的根本问题是什么,而不是询问如何制作目前的设计工作。
您可以找到关于此here的说明;它是关于Java而不是Typescript,但这个想法是一样的。