我有一个暴露方法的抽象类:
public abstract class Foo {
public update(){
//do some stuff
}
}
此类继承自:
public class Doo extends Foo {
public update(){
super.update();
const x = this.getValue(); //problem line
}
}
现在,由于update()
被公开,它正在不同的上下文中执行,因此“问题行”上的this
引用了调用对象,我通常会解决的问题是在抽象父级中将update()
声明为箭头方法:
public class Foo {
public update = () => {
//call this all i want
}
}
但是,如果我这样做,我就不能再从子类中调用super()
。有没有办法调用super.update()
和来维持对this
的控制权?
答案 0 :(得分:1)
不幸的是,你能做的最好的事情是创建两个方法 - 一个用于覆盖,一个用于公共。将实现放在覆盖方法中,但使用调用this.otherMethod()的箭头函数公开单独的方法。这样你就可以为公共方法保留this
并为实现保留super
。
这不是一个TypeScript问题,而是一个JavaScript问题。