【问题标题】:Typescript private properties encapsulation conventionsTypescript 私有属性封装约定
【发布时间】:2018-07-25 13:22:52
【问题描述】:

问题:在 Typescript 中命名私有属性的最佳做法是什么?作为一项规则,是否应该为该属性创建“获取和设置”?

阅读以下链接让我停下来思考我认为编写 Typescript 的好习惯:https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines

我理解他对他的编码指南的限定词,这不是一个规定性指南,但是,他关于命名私有属性的约定在我的脑海中提出了关于在 Typescript 中正确封装和使用私有属性的问题。我一直遵循的约定是使用下划线前缀命名私有属性,然后创建一个 get 和 set,用于从该属性分配或获取值。回到 Anders 的 Delphi 时代,这种约定使它成为一种属性,而不仅仅是另一个变量。该属性赋予了它允许加工的特性。

例子:

…
private _progress: IImportInfo[];
…
get progress(): IImportInfo[] {
  return this._progress;
}

set progress(value: IImportInfo[]) {
  this._progress = value;
}
…

因此,您可以从 html 文件中获取属性中的值:

<li *ngFor="let item of progress">

但是,您可以这样访问它:

<li *ngFor="let item of _progress">

所以允许从外部访问私有变量。通常使用私有变量获得的封装性质不存在,但是,遵守封装规则 (IMO) 有一些价值。但是,问这个问题的目的不是“我的意见”。我想知道 angular/typescript 开发人员认为处理 Typescript 私有属性的最佳实践是什么。最好是指向处理私有财产的“最佳实践”的网站(具有可信度)的链接。

在此先感谢您对此问题的任何帮助。

【问题讨论】:

    标签: angular typescript encapsulation


    【解决方案1】:

    找到了我想要的答案:

    https://angular.io/guide/styleguide

    属性和方法 款式03-04 请务必使用小写驼峰式命名属性和方法。

    避免在私有属性和方法前加上下划线。

    为什么?遵循关于属性和方法的传统思维。

    为什么? JavaScript 缺少真正的私有属性或方法。

    为什么? TypeScript 工具可以轻松识别私有属性和公共属性和方法。

    【讨论】:

    猜你喜欢
    • 2021-11-17
    • 2011-05-15
    • 2016-08-09
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多