javascript - Typescript kompilert kode som bruker nestede og umiddelbart påkallte funksjoner


Jeg prøver å forstå hvorfor følgende:

Jeg har

class User {
    wow:String = "xxx";
}

og TypeScript-kompilatoren kompilerer det til

var User = (function () {
    function User() {
        this.wow = "xxx";
    }
    return User;
}());

i stedet for

var User = function() {
    this.wow = "xxx";
};

Hva er fordelene med å bruke den nestede User-konstruktøren og umiddelbar funksjonskall?

Svar #1

Det kan være flere gode grunner, men jeg mistenker at en av dem er at hvis du kjører følgende vanlige gamle JavaScript (over TypeScripts kompilatorutdata) :

var john = new User();
console.log("John constructed with: " + john.constructor);

du får da,

John constructed with: function User() {
    this.wow = "xxx";
}

i stedet for,

John constructed with: function() {
    this.wow = "xxx";
}

hvor muligheten til å se den «User» (konstruktørfunksjonens identifikator) kan gi et nyttig hint, mens man feilsøker noe senere, eller lignende.

Håper dette hjelper,

Relaterte artikler