gpt4 book ai didi

angular - 公共(public)或私有(private) - Angular 2 组件类方法混淆

转载 作者:太空狗 更新时间:2023-10-29 17:14:38 26 4
gpt4 key购买 nike

我很难理解在组件类中哪些方法应该是私有(private)的,哪些应该是公共(public)的。

在服务中判断方法是公共(public)的还是私有(private)的似乎相当容易,例如:

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;
}
}

遵循该逻辑,组件中的所有方法都应该是私有(private)的,因为没有任何方法应该暴露在类之外。(根据to that post 组件和它的 View 是一个实体)

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

没有悲剧然后在this video您可以了解到只有组件的公共(public)方法才应该进行单元测试。按照上面的步骤,我找不到任何理由在组件类中使用公共(public)方法,但我仍然有一些值得测试的方法(尤其是在 View 中使用的方法)。这意味着我完全迷失了 Angular 世界中私有(private)和公共(public)方法的意义。

所以我的问题很简单:

组件中的哪些方法应该标记为公共(public)和私有(private)。

最佳答案

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

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

有些情况下我们会继承一个组件。看这里component inheritance in 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) 期间适用。虽然修饰符在某些情况下很有用,但我建议尽量减少它的使用。

关于angular - 公共(public)或私有(private) - Angular 2 组件类方法混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com