Я не уверен в лучшем подходе для обработки области видимости «этого» в 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);
}
}
Это правильный подход?