Я не впевнений у найкращому підході до визначення масштабу "цього" в TypeScript.
Ось приклад поширеного шаблону в коді, який я перетворюю на TypeScript:
class DemonstrateScopingProblems {
private status = "blah";
public run() {
alert(this.status);
}
}
var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run();
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run);
Тепер я міг змінити дзвінок на ...
$(document).ready(thisTest.run.bind(thisTest));
... що працює. Але це якось жахливо. Це означає, що код може компілюватись і справно працювати в деяких обставинах, але якщо ми забудемо прив’язати область, він порушиться.
Мені б хотілося, щоб це було зроблено в межах класу, так що при використанні класу нам не потрібно турбуватися про те, на що поширюється "це".
Будь-які пропозиції?
Оновлення
Ще один підхід, який працює із використанням жирової стрілки:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Це правильний підхід?