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();
        }
    }
}

Relaterte artikler