TypeScript:在构造函数中使用private或public



我是TypeScript世界的新手,我见过这样的例子来处理注入对象,并将其设置为组件的属性(this.anything)

首先设置public,然后手工设置this.nav

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

和this, private

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 when we have an access modifier (private/public) on the constructor parameter(s)
       // this.nav = nav;
       this.someFunction();
   }
   someFunction(){
       console.log(this.nav); // Prints out the NavController.
   }
}

无论何时在构造函数形参上指定public或private,都会在该类上创建相应的公共/私有变量,并填充该形参的值。

实际上,这两个代码示例的唯一区别是一个是私有的,另一个是公共的。

生成的JavaScript将是相同的。但是,如果您试图访问代码中的私有变量,编译器将抛出错误。

publicprivate,作为Typescript的很多特性,只是Typescript的修饰符。我不确定编译器对这些变量的命名是否完全相同,但从JavaScript的角度来看,代码本质上是相同的。

Typescript的好处是给你像类型检查这样的特性,它不一定总是修改输出的代码。

最新更新