如果它被初始化为<observable>,是否有任何理由在构造函数中定义observable

时间:2017-11-13 00:16:22

标签: angular

我正在审查一段代码,并且对开发人员为何以这种方式实现的方式感到有些困惑。在类中,它们在类的顶部初始化两个变量。然后在构造函数中重复它。

以下是相关进口商品:

import {Subject, Observable} from 'rxjs';

以下是代码:

  subject: Subject<Boolean>; // Observable Boolean sources
  subject$: Observable<Boolean>;  // Observable Boolean streams

  private _menuWidth: number = 300; // Default menu width

  constructor() {
    this.subject = new Subject<Boolean>();
    this.subject$ = this.subject.asObservable();

  }

我无法访问开发人员,所以想知道这对任何人都有意义。

我是Angular的新手,可能会遗漏一些东西。

1 个答案:

答案 0 :(得分:1)

在课程的顶部,他们没有初始化这些属性。他们刚刚定义了给定类型的这些属性。但没有任何执行。

编译期间的Typescript基本上剥离了类型。所以它实际上看起来像这样:

_menuWidth = 300; // Default menu width

constructor() {
   this.subject = new Subject<Boolean>();
   this.subject$ = this.subject.asObservable();
}

例如,Subject的构造函数仅在构造函数中执行。不是说该变量的类型为Subject