Med TypeScript: kan ikke referere til 'this' (klasse) fra innsiden av en funksjon
Jeg lærer TypeScript og har følgende klasse:
class DetailDriver {
public get driver() {
return super.getEntity();
}
public activate(): breeze.Promise {
var id = this.driver.id(); // this refers to (class) DetailDriver
return promise
.then(getCertificate)
.fail(somethingWrong);
function getCertificate() {
var id = this.driver.id(); // this refers to any
return ...
}
}
}
Som du kan se i koden ovenfor, refererer det første kallet til this til klassen min DetailDriver. Det er bra. Det andre kallet til this (inne i getCertificate) refererer til any. Det er ikke det jeg trenger. Jeg trenger å referere til klassen min DetailDriver.
Hvordan gå frem?
Takk.
Svar #1
Vel,
I henhold til seksjon 4.9.2 i TypeScript-språkspesifikasjonen bør du bruke fedt pil-syntaks for å bevare skopingen for dette.
return promise
.then(() => return.this.id;)
.fail(somethingWrong);
Da blir denne nøkkelordet riktig bestemt til å være en Driver.
Svar #2
For referanse, kan du også bare gjøre:
class SomeClass {
public someMethod() {
// Do something
}
public anotherMethod() {
var that = this; // Reference the class instance
function someFunction () {
that.someMethod();
}
}
}
