Non sono sicuro dell'approccio migliore per la gestione dell'ambito di "questo" in TypeScript.
Ecco un esempio di un modello comune nel codice che sto convertendo in 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);
Ora, potrei cambiare la chiamata a ...
$(document).ready(thisTest.run.bind(thisTest));
... che funziona. Ma è piuttosto orribile. Significa che tutto il codice può essere compilato e funzionare correttamente in alcune circostanze, ma se dimentichiamo di associare l'ambito si interromperà.
Vorrei un modo per farlo all'interno della classe, in modo che quando si usa la classe non dobbiamo preoccuparci di cosa sia "questo".
Eventuali suggerimenti?
Aggiornare
Un altro approccio che funziona è usare la freccia grassa:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
È un approccio valido?