簡體   English   中英

TypeScript:在構造函數中使用private或public

[英]TypeScript: use private or public in constructor

我是TypeScript世界的新手,我已經看過這個例子來處理注入的對象並將其設置為組件的屬性(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時這是一樣的嗎?

實際上,在您的第一個示例中,根本不需要顯式賦值:

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

無論何時在構造函數參數上指定public或private,都會在類上創建相應的公共/私有變量,並使用參數的值填充該變量。

實際上,兩個代碼示例的唯一區別是一個是私有的,另一個是公共的。

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM