Как я могу сохранить лексическую область видимости в TypeScript с помощью функции обратного вызова
У меня есть класс 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» таким образом (извините), то любая ссылка на this в методе обратного вызова вернется к объекту Window. Поскольку я все время использую функции со стрелками, я ожидал, что «this» будет сам класс, как и везде в моем классе.
Кто-нибудь знает, как передавать обратные вызовы в TypeScript, сохраняя лексическую область видимости?