gpt4 book ai didi

javascript - TypeScript 类继承 : 'super' Can Only Be Referenced in Members of Derived Classes or Object Literal Expressions

转载 作者:行者123 更新时间:2023-11-30 11:42:23 24 4
gpt4 key购买 nike

我们正在使用具有继承性的 TypeScript 类,并且遇到了一个明显的范围问题。 TypeScript/JavaScript 不允许我们从 promise 结构(甚至是封闭函数)中调用“super”。我们收到此错误:

TypeScript:“super”只能在派生类或对象字面量表达式的成员中引用

有解决办法吗?这是代码:

export class VendorBill extends Transaction {
constructor() {
super();
}

save() {

let deferred = $.Deferred();

$.ajax({
type: "GET",
url: '/myrestapi',
success: function (data) {
deferred.resolve();
},
error: function (jqXHR: any, textStatus, errorThrown) {
deferred.reject()
}
})

$.when(deferred).always(function () {
super.save(); <----------- THIS IS CAUSING THE ERROR
})
}
}

最佳答案

原因是编译器把super.save()变成了:

_super.prototype.fn.call(this);

但是 this 不是正确的,因为您正在传递一个未绑定(bind)到正确上下文的函数。

您可以使用 arrow function :

$.when(deferred).always(() => {
super.save();
})

关于javascript - TypeScript 类继承 : 'super' Can Only Be Referenced in Members of Derived Classes or Object Literal Expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42169596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com