Nie jestem pewien najlepszego podejścia do obsługi określania zakresu „this” w języku TypeScript.
Oto przykład typowego wzorca w kodzie, który konwertuję na 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);
Teraz mogę zmienić połączenie na ...
$(document).ready(thisTest.run.bind(thisTest));
... który działa. Ale to trochę straszne. Oznacza to, że cały kod może się skompilować i działać dobrze w pewnych okolicznościach, ale jeśli zapomnimy powiązać zakres, to się zepsuje.
Chciałbym znaleźć sposób na zrobienie tego w ramach klasy, aby podczas korzystania z klasy nie musieli się martwić o to, do czego odnosi się „to”.
Jakieś sugestie?
Aktualizacja
Innym podejściem, które działa, jest użycie grubej strzałki:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Czy to prawidłowe podejście?