2016-10-03 6 views
4

Ich bin neu in Typoskript Welt, und ich habe mit diesem gesehen Beispiele mit injizierten Objekte zu behandeln und es auf eine Eigenschaft der Komponente (this.anything) gesetztTyposkript: Verwenden Sie privat oder öffentlich in Konstruktor

zuerst mit öffentlicher und Einstellung von Hand

export class XPTO { 
    constructor(public nav: NavController) { 
     this.nav = nav; 
    } 
} 

und dies this.nav, mit eigenen

export class XPTO { 
    constructor(private nav: NavController) { 
     //this.nav is nav? 
    } 
} 

in beiden Fällen nach dem Objekt this.nav konstruieren ist ein NavController Objekt. Was sind die Unterschiede beider Implementierungen? Oder ist das das Gleiche, wenn es zu reinem Javascript kompiliert wird?

+1

Mögliches Duplikat von [Understanding "public"/"private" in Typoskript-Klasse] (http://stackoverflow.com/questions/38713052/understanding-public-private-in-typescript-class) –

+0

Das verknüpfte Duplikat doesn ' t machen Sie einen guten Job, um die Frage zu beantworten –

Antwort

9

Eigentlich in Ihrem ersten Beispiel die explizite Zuordnung wird nicht benötigt:

export class XPTO { 
    constructor(public nav: NavController) { 
     // This line is not required. 
     // this.nav = nav; 
     this.someFunction(); 
    } 
    someFunction(){ 
     console.log(this.nav); // Prints out the NavController. 
    } 
} 

Jedes Mal, wenn Sie auf einem Konstruktorparameter eine entsprechende öffentliche/private Variable auf der Klasse öffentlichen oder privaten secify und mit den gefüllten erstellt Wert des Parameters.

Also wirklich, der einzige Unterschied der beiden Codebeispiele ist, dass man privat ist und der andere öffentlich ist.

Das resultierende Javascript wird gleich sein, aber der Compiler wird einen Fehler auslösen, wenn Sie versuchen, auf private Variablen in Ihrem Code zuzugreifen.

3

public und private, wie viele Typoskript-Features, sind nur TypScript-Modifikatoren. Ich bin mir nicht sicher, ob der Compiler diese Variablen genau gleich nennt, aber aus JavaScript-Sicht ist der Code im Wesentlichen derselbe.

Das Interesse von Typescript ist es, Ihnen Funktionen wie Typprüfung zu geben, es ändert nicht unbedingt immer den ausgegebenen Code.

Verwandte Themen