Saya tidak yakin pendekatan terbaik untuk menangani pelingkupan "ini" di TypeScript.
Berikut adalah contoh pola umum dalam kode yang saya ubah ke 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);
Sekarang, saya dapat mengubah panggilan ke ...
$(document).ready(thisTest.run.bind(thisTest));
... yang berhasil. Tapi itu mengerikan. Ini berarti bahwa kode semua dapat dikompilasi dan berfungsi dengan baik dalam beberapa keadaan, tetapi jika kita lupa untuk mengikat cakupan, itu akan rusak.
Saya ingin cara melakukannya di dalam kelas, sehingga saat menggunakan kelas kita tidak perlu khawatir tentang cakupan "ini".
Ada saran?
Memperbarui
Pendekatan lain yang berhasil adalah menggunakan panah gemuk:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Apakah itu pendekatan yang valid?