TypeScript'te "this" kapsamını işlemek için en iyi yaklaşımdan emin değilim.
TypeScript'e dönüştürdüğüm kodda yaygın bir model örneği:
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);
Şimdi, aramayı şu şekilde değiştirebilirim ...
$(document).ready(thisTest.run.bind(thisTest));
... işe yarıyor. Ama bu biraz korkunç. Bu, kodun bazı durumlarda tümünün derlenebileceği ve iyi çalışabileceği anlamına gelir, ancak kapsamı bağlamayı unutursak kırılır.
Bunu sınıf içinde yapmanın bir yolunu istiyorum, böylece sınıfı kullanırken "bu" nun kapsamının ne olduğu konusunda endişelenmemize gerek kalmaz.
Baska öneri?
Güncelleme
İşe yarayan başka bir yaklaşım da şişman ok kullanmaktır:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
Bu geçerli bir yaklaşım mı?