Angular组件中的“私有”和“公共”

Hongbo Miao :

如果我没有之前添加privatefoo默认公开loadBartext

export class RandomComponent {
  @Input() foo: string;
  @Output() loadBar = new EventEmitter();
  text: string;
}

它们public在组件中是否有用例

出于封装/安全性的原因,我是否应该始终private像下面这样添加所有内容?

export class RandomComponent {
  @Input() private foo: string;
  @Output() private loadBar = new EventEmitter();
  private text: string;
}

谢谢

画摩尔:

对于这个问题,有很多要说的话,这些是我想到的第一个想法:

首先,请记住,这private只是一个编译时结构-无法在运行时强制执行(有关讨论,请参见此处此处)。因此,请不要滥用private任何出于安全目的有用的概念这根本不是问题所在。

关于封装的,当您要在其中封装组件的字段或方法时,要明确表明不应从其他任何地方访问它,那么您绝对应该这样做private:那private是为了:它表明了您的意图,即无论您在课堂上穿什么,都不应从课外接触。

同样的道理public:它也是仅编译时的构造,因此public默认情况下类成员为true的事实在运行时的含义为零。但是,当您有一个成员明确打算将其作为类的API的一部分公开给外界时,您应该绝对使其public发出信号以表明这一意图:这就是public目的。

通常,这全部适用于Typescript。具体来说,在Angular中,在组件类上具有公共成员肯定是有效的用例:例如,在实现容器/组件(又名smart / dumb)模式时,“笨拙”的子代通过构造函数注入注入“聪明”的父代,传达您的意图,让孩子们感动父母不应该与父母打交道是非常重要的:否则,当您发现那些愚蠢的孩子在父母的酒柜里四处游荡时,不要感到惊讶。

因此,我对您的问题的回答:

我应该总是像下面这样对所有这些人都添加私有吗?

是强调您不应该总是添加,private因为这样做会破坏关键字的目的,因为如果将其放置在任何地方,它都不再表示任何意图:您最好也不要将其放置在任何地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章