Je ne suis pas sûr de la meilleure approche pour gérer la portée de "this" dans TypeScript.
Voici un exemple d'un modèle commun dans le code que je convertis en 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);
Maintenant, je pourrais changer l'appel en ...
$(document).ready(thisTest.run.bind(thisTest));
... ce qui fonctionne. Mais c'est un peu horrible. Cela signifie que le code peut tout compiler et fonctionner correctement dans certaines circonstances, mais si nous oublions de lier la portée, il se cassera.
Je voudrais un moyen de le faire dans la classe, de sorte que lors de l'utilisation de la classe, nous n'ayons pas à nous soucier de la portée de «ceci».
Aucune suggestion?
Mettre à jour
Une autre approche qui fonctionne consiste à utiliser la grosse flèche:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Est-ce une approche valable?