TypeScript „ten” problem dotyczący zakresu, gdy wywołany w wywołaniu zwrotnym jquery
Nie jestem pewien najlepszego podejścia do obsługi zakresu „this” w TypeScript.
Oto przykład wspólnego 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ę okropne. Oznacza to, że kod może się w niektórych okolicznościach skompilować i działać poprawnie, ale jeśli zapomnimy powiązać zakres, zostanie on przerwany.
Chciałbym znaleźć sposób na zrobienie tego w klasie, aby podczas korzystania z klasy nie musieliśmy martwić się o to, do czego jest „to”.
Jakieś sugestie?
AktualizacjaInne podejście, które działa, to użycie grubej strzałki:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Czy to prawidłowe podejście?