公共或私人 - Angular 2组件类方法混乱



我很难理解哪种方法应该是私人的,哪些方法应该在组件类中公开。

判断方法是公共还是私有的,例如:

似乎很容易服务。
export class MyServiceClass {
  private _cache = {}; // this value is private and shouln't be accessed from outside
  public accessCache(){ // it's public as it's an API method
    return this._cache;
  }
  public setCache(newVal){
     this._cache = newVal;
  }
}

遵循该逻辑,组件中的所有方法都应是私有的,因为这些方法都不应在班级之外暴露。(根据,该职位组件及其视图是一个实体)

export class MyComponent {      
  private _getRandomNumbers(){ // this is used in view only
    /*..*/
  }
}

没有悲剧,但是在中,此视频您可以了解到只能对组件的公共方法进行单位测试。通过上面的遵循,我找不到在组件类中使用公共方法的任何理由,但是我仍然有一些值得测试的方法(尤其是使用中的方法)。这意味着我完全失去了角度世界中私人和公共方法的含义。

所以我的问题很简单:

组件中的哪些方法应标记为公共和私人。

在组件类中,我会说,将所有内容设置为公共(如果没有访问修饰符,默认情况下是公开)。

在正常情况下,我们不扩展组件类,因此,不需要访问修饰符,恕我直言。

在某些情况下,我们将继承一个组件。请参阅Angular 2中的组件继承。但是,即使在这些情况下,访问修饰符也不是必需的。

...
export class MyComponent {
  // injected service as private
  constructor(private _randomSvc: RandomService) {} 
  getRandomNumbers(){ } // leave it as public
  @Input()
  myInput: string; // leave it as public
  @Output()
  myOutput; // leave it as public
}

记住JavaScript本身没有访问修饰符。仅在开发过程中适用的访问修饰符(IDE)。虽然修饰符在某些情况下很有用,但我建议最大程度地减少其用法。

最新更新