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

标签 javascript typescript

我是 TypeScript 世界的新手,我看过用它处理注入(inject)对象并将其设置为组件属性 (this.anything) 的示例

首先公开并手动设置到 this.nav

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

还有这个,有私有(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.
       // this.nav = nav;
       this.someFunction();
   }
   someFunction(){
       console.log(this.nav); // Prints out the NavController.
   }
}

每当您在构造函数参数上指定 public 或 private 时,都会在类上创建相应的公共(public)/私有(private)变量并填充参数的值。

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

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

关于javascript - TypeScript:在构造函数中使用 private 或 public,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840606/

相关文章:

javascript - 无法清除输入类型=javascript jquery中的文件

angular - 为什么我的 http 请求取消/停止 observables 流?

javascript - 类型 'string' 不可分配给类型 'never'

javascript - 在一个函数/方法上使用 'strictNullChecks' 注释

javascript - 根据选择选项更改表格单元格内容?

javascript - 我需要根据独特的对象大小重复纹理

javascript - 如何更改 html 页面中每次出现的特定字符的颜色? (例如 '*' )

javascript - 找出 JS 和 PHP 中时间戳的差异

reactjs - TS 表达式产生的联合类型太复杂,无法用 Material-UI 和 @react-three/fiber 表示

typescript - 为什么TypeScript不允许将通用枚举值作为默认参数值