No estoy seguro del mejor enfoque para manejar el alcance de "esto" en TypeScript.
Aquí hay un ejemplo de un patrón común en el código que estoy convirtiendo a 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);
Ahora, podría cambiar la llamada a ...
$(document).ready(thisTest.run.bind(thisTest));
... que funciona. Pero es algo horrible. Significa que todo el código puede compilarse y funcionar bien en algunas circunstancias, pero si nos olvidamos de vincular el alcance, se romperá.
Me gustaría una forma de hacerlo dentro de la clase, de modo que cuando usemos la clase no tengamos que preocuparnos por el alcance de "esto".
¿Alguna sugerencia?
Actualizar
Otro enfoque que funciona es usar la flecha gruesa:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
¿Es ese un enfoque válido?