繁体   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