在ES6中,您可以通过
this.constructor
引用静态方法:class MainClass {
static info() {
return "This is some information";
}
constructor() {
this.info = this.constructor.info(); // Allows subclass to define different '.info()' method.
}
}
class ChildClass extends MainClass {
static info() {
return "This information is from the child";
}
constructor() {
super();
}
}
在 TypeScript 中有没有一种方法可以做到这一点?我想重写父类的静态方法并从子类中使用它,而不必在实例方法中重新定义引用。目前,我所知道的唯一访问 TypeScript 中静态方法的方式就是使用类名。
MainClass.info();
但是如果我这样做,子类将继续使用MainClass.info();
而不是它自己的.info()
方法。
as typeof MainClass
是一个很好的补充,可以提供准确的类型支持,而不需要太多额外的代码,感谢您提供了这个。您的第三个代码块没有使用静态方法,但我相信您正在尝试展示@dpoetzsch在评论中建议的重写设置属性之类的东西。是这样吗?(我尝试粘贴游乐场链接,但它太长了无法作为评论) - Shaun