Ich bin mir nicht sicher, wie ich das Scoping von "this" in TypeScript am besten handhaben kann.
Hier ist ein Beispiel für ein allgemeines Muster in dem Code, den ich in TypeScript konvertiere:
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);
Jetzt könnte ich den Anruf ändern in ...
$(document).ready(thisTest.run.bind(thisTest));
... was funktioniert. Aber es ist irgendwie schrecklich. Dies bedeutet, dass Code unter bestimmten Umständen kompiliert werden kann und einwandfrei funktioniert. Wenn wir jedoch vergessen, den Bereich zu binden, wird er beschädigt.
Ich möchte eine Möglichkeit, dies innerhalb der Klasse zu tun, damit wir uns bei der Verwendung der Klasse keine Gedanken darüber machen müssen, worauf "dies" abzielt.
Irgendwelche Vorschläge?
Aktualisieren
Ein anderer Ansatz, der funktioniert, ist die Verwendung des Fettpfeils:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Ist das ein gültiger Ansatz?