2016-10-03 241 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的兴趣在于为您提供类型检查等功能,但不一定总是修改输出的代码。