在Typescript中定义为箭头函数的方法上调用super.method()时会出错。这是因为箭头函数没有自己的this绑定,它会继承父级作用域的this值。而super关键字只能在派生类的构造函数和方法中使用,用于调用父类的构造函数和方法。
当在箭头函数中使用super.method()时,由于箭头函数没有自己的this绑定,它无法正确地引用到父类的方法。因此,会导致编译错误或运行时错误。
为了解决这个问题,可以将箭头函数改为普通函数,或者使用普通函数来调用super.method()。普通函数会有自己的this绑定,可以正确引用到父类的方法。
以下是一个示例代码:
class Parent {
method() {
console.log("Parent method");
}
}
class Child extends Parent {
arrowFunction = () => {
// 错误示例,箭头函数无法正确引用到父类的方法
// super.method();
// 正确示例,使用普通函数来调用super.method()
const normalFunction = function() {
super.method();
};
normalFunction();
}
}
const child = new Child();
child.arrowFunction();
在这个示例中,箭头函数arrowFunction无法直接调用super.method(),会导致编译错误。为了解决这个问题,我们定义了一个普通函数normalFunction,并在其中调用super.method(),这样就可以正确引用到父类的方法。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云