Não tenho certeza da melhor abordagem para lidar com o escopo "this" no TypeScript.
Aqui está um exemplo de um padrão comum no código que estou convertendo para 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);
Agora, eu poderia mudar a chamada para ...
$(document).ready(thisTest.run.bind(thisTest));
... que funciona. Mas é meio horrível. Isso significa que o código pode ser compilado e funcionar bem em algumas circunstâncias, mas se esquecermos de vincular o escopo, ele será interrompido.
Eu gostaria de uma maneira de fazer isso dentro da classe, de modo que, ao usar a classe, não precisemos nos preocupar com o escopo de "this".
Alguma sugestão?
Atualizar
Outra abordagem que funciona é usar a seta grande:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Essa é uma abordagem válida?