2016-09-21 5 views
2

Wenn ReactJS mit TypeScript verwendet wird, ist es besser, Klassenvariablen im Konstruktor zu initialisieren oder wenn die Klassenvariable deklariert wird? Es funktioniert auf jede Art und Weise und das transpilierte Javascript sieht genauso aus.Variablen im Konstruktor oder in der Deklaration initialisieren

export class MyClass extends React.Component<iProps, {}> { 
     private myName: string = "Hello"; 

     constructor(props: iProps) { 
     super(props); 

     this.myName= "Hello"; 
     } 
} 
+0

Beide scheinen falsch zu mir, da der Punkt der Requisiten ist, dass sie einmal pro Render übergeben werden, anstatt wenn die Klasse zuerst konstruiert wird. –

+0

Die anfänglichen Requisiten werden an den ctor übergeben, also sollten beide Wege funktionieren. Es gibt hier wahrscheinlich kein richtig/falsch, aber ich bevorzuge es immer, die Mitgliedswerte im ctor zu setzen, da es meiner Meinung nach den Code verständlicher macht. –

+0

@TomFenech - Ja, ich entfernte die Requisiten von der Frage. – Lambert

Antwort

1

Es ist genau das gleiche, zum Beispiel:

class MyClass1 { 
     private myName: string = "Hello"; 
} 

Compiliert zu:

var MyClass1 = (function() { 
    function MyClass1() { 
     this.myName = "Hello"; 
    } 
    return MyClass1; 
}()); 

Und:

class MyClass2 { 
     private myName: string; 

     constructor() { 
     this.myName = "Hello"; 
     } 
} 

Compiliert zu:

var MyClass2 = (function() { 
    function MyClass2() { 
     this.myName = "Hello"; 
    } 
    return MyClass2; 
}()); 

(code in playground)

Wie Sie die kompilierten Versionen identisch sind zu sehen (mit Ausnahme der Klassennamen).
So können Sie verwenden, welche Sie eleganter finden.

Wie reagieren, können Sie die Requisiten verwenden, die an den Konstruktor übergeben werden.
Wenn Sie es6-Stilklassen mit reaktiven Komponenten verwenden, wird Ihr Anfangszustand im Konstruktor zugewiesen und nicht mit der Methode getInitialState.
Wenn Ihr Ausgangszustand eine Funktion der Requisiten ist, müssen Sie diese im Konstruktor verwenden.

Verwandte Themen