【问题标题】:Best practice class member initialization最佳实践类成员初始化
【发布时间】:2019-06-26 16:52:29
【问题描述】:

当我有这样的课时:

import {Subject} from "rxjs";

export class MyClass {
  protected subject: Subject<string>;
}

TypeScript 中,在构造函数中初始化成员 subject 是否更好,例如:

export class MyClass {
  protected subject: Subject<string>;

  constructor() {
    this.subject = new Subject<string>();
  }
}

或在类体内内联,如:

export class MyClass {
  protected subject: Subject<string> = new Subject<string>();
}

注意

在这种情况下,内联初始化显然只适用于像Subject 这样的导入类,而不适用于只存在于构造函数中的注入类。

编辑

Angular Style Guide 不包含此部分。

【问题讨论】:

  • 不要认为有任何最佳实践,当初始值不依赖于ctor参数时,我更喜欢内联..
  • 是的,我也是。小班。但是,当混合两种技术时,有时会感觉不一致。并且根据构造函数参数列表在两者之间切换,也不是那么顺利。
  • 它们是一样的。我通常内联初始化所有内容,除非它背后有更多逻辑。所以我可能不会protected subject: BehaviorSubject&lt;string&gt; = new BehaviorSubject&lt;string&gt;(this.getDefaultValueOfSubject());

标签: angular typescript rxjs observable


【解决方案1】:

没关系。两个代码 sn-ps 将被完全转换为相同的代码,即

export class MyClass {
    constructor() {
        this.subject = new Subject();
    }
}

【讨论】:

  • 这是一个有趣的方面。谢谢提示
  • @scipper you can verify it(如果你有类似的问题)
  • @Maryannah 是的,就是这么做的 :)
猜你喜欢
  • 2012-04-20
  • 2010-09-22
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多