У меня есть класс TypeScript с функцией, которую я намерен использовать в качестве обратного вызова:
removeRow(_this:MyClass): void {
...
// 'this' is now the window object
// I must use '_this' to get the class itself
...
}
Я передаю его другой функции
this.deleteRow(this.removeRow);
который в свою очередь вызывает метод JQuery Ajax, который в случае успеха вызывает обратный вызов следующим образом:
deleteItem(removeRowCallback: (_this:MyClass) => void ): void {
$.ajax(action, {
data: { "id": id },
type: "POST"
})
.done(() => {
removeRowCallback(this);
})
.fail(() => {
alert("There was an error!");
});
}
Единственный способ сохранить ссылку 'this' для моего класса - передать его на обратный вызов, как показано выше. Он работает, но он затягивает код. Если я не подключаю 'this' к этому (извините), то любая ссылка на это в методе обратного вызова вернулась к объекту Window. Поскольку я все время использую функции со стрелками, я ожидал, что 'this' будет самим классом, так как он находится в другом месте моего класса.
Кто-нибудь знает, как передавать обратные вызовы в TypeScript, сохраняя лексическую область?