Я не уверен в наилучшем подходе к обработке области "this" в 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));
... который работает. Но это нечто ужасное. Это означает, что в некоторых случаях код может компилироваться и работать нормально, но если мы забудем связать область, она сломается.
Мне нужен способ сделать это внутри класса, так что при использовании класса нам не нужно беспокоиться о том, к чему привязан "this".
Любые предложения?
Update
Другим подходом, который работает, является использование стрелки жира:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Это действительный подход?