2016-10-03 238 views
4

私人或公共我是新來的打字稿世界,我已經看到了這方面的例子來處理注入的對象,並將其設置爲組件的屬性(this.anything)打字稿:使用構造

首先與公共和設置手工this.nav

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

而這一點,與私人

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

在這兩種情況下構造對象this.nav後是NavController對象。 這兩種實現有什麼不同?或者當編譯爲純javascript時,這是相同的?

+1

可能重複[瞭解「打字稿類中的公共」/「私人」](http://stackoverflow.com/questions/38713052/understanding-public-private-in-typescript-class) –

+0

鏈接的副本不'在回答這個問題上做得很好 –

回答

9

其實在你的第一個例子並不需要在所有的明確劃分:

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. 
    } 
} 

每當你secify公共或私人上的相應的公共/私有變量的類創建和填充構造函數的參數參數的值。

真的,這兩個代碼示例的唯一區別是一個是私有的,另一個是公共的。

生成的JavaScript將是相同的,但如果您嘗試訪問代碼中的私有變量,則編譯器將引發錯誤。

3

publicprivate,因爲很多Typescript功能,只有TypeScript修飾符。我不確定編譯器是否將這些變量命名完全相同,但從JavaScript的角度來看,代碼將基本相同。

Typescript的興趣在於爲您提供類型檢查等功能,但不一定總是修改輸出的代碼。