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?

Aktualizacja

Inne 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?

questionAnswers(4)

yourAnswerToTheQuestion