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)。 尽管修饰符在某些情况下很有用,但我建议尽量减少使用该修饰符。
链接地址: http://www.djcxy.com/p/92343.html上一篇: Angular 2 component class methods confusion
下一篇: DBUnit PostgresqlDataTypeFactory does not recognizes enum list