2016-03-20 13 views
2

nehmen wir an, dass ich eine Klasse in Typoskript wie folgt geschrieben:TypeScript: Was ist der Unterschied zwischen der Deklaration von Variablen innerhalb und außerhalb des Konstruktors?

class Messenger { 
    x = 10; 
    constructor(){ 
     this.y = 20; 
    } 
}; 

die JavaScript-Version dieser wird wie folgt aussehen:

var Messenger = (function() { 
    function Messenger() { 
     this.x = 10; 
     this.y = 20; 
    } 
    return Messenger; 
}()); 
; 

Die x- und y-Variablen auf die gleiche Sache kompiliert werden in JavaScript, was ist der Unterschied hier?

Danke.

Antwort

0

Es kompilieren lässt, aber der Compiler eine Fehlermeldung geben sollte, ist, dass y nicht Teil der Klasse Messenger hier:

constructor(){ 
    this.y = 20; 
} 

jedoch der Compiler wird oft unabhängig von Fehlern kompilieren, wenn Sie es drehen Aus in Ihrem tsconfig.json. Es gibt jedoch eine Möglichkeit, eine Variable im Konstruktor zu deklarieren, aber nicht im Body, sondern in der Parameterliste. Wie folgt aus:

constructor(public y: number){} 

setzen Entweder private oder public vor ihnen. Auf diese Weise wird die Variable automatisch auf das gesetzt, was Sie in den Konstruktor einfügen, ohne dass Sie this.y = y; eingeben müssen. Es ist eine sehr einfache Möglichkeit, Variablen zu erstellen, die Sie immer in den Konstruktor einfügen.

Sie können sogar einen Standardparameter geben, dass, wenn Sie irgendwelche Argumente in den Konstruktor einfügen nicht funktioniert:

constructor(public y = 20){} 

Check out this article für weitere Informationen.

2

Dies ist eigentlich richtig Typoskript:

class Messenger { 
    x = 10; 
    y: number; 

    constructor() { 
     this.y = 20; 
    } 
} 

Sie die Eigenschaften der Klasse erklären müssen (nicht in JavaScript erforderlich). Da es auf dieselbe Weise in JavaScript kompiliert wird, gibt es keinen Unterschied in der Laufzeit. Aber in einigen Fällen ist es einfacher zu schreiben nur x = 10 (Eigenschaft ist korrekt als Nummer eingegeben) als y: number + this.y = 20 - so, wenn Sie den Standardwert für Eigenschaften haben, die nicht von Parametern kommen, dann können Sie es in weniger Zeichen schreiben.

Verwandte Themen