2017-11-13 8 views
0

コードのブロックを確認していますが、なぜ開発者がこのように実装したのか少し混乱しています。クラスでは、クラスの先頭に2つの変数が初期化されます。その後、コンストラクタでそれを繰り返します。ここでコンストラクタでobservableを定義する理由はありますか?<Observable>

は、関連の輸入である:ここでは

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を初めて使っていて、何かが見つからない可能性があります。

+0

私は最初に彼はプロパティの型を定義しており、コンストラクタではプロパティーを初期化していることを伝えています。 –

+0

Ah。わかった。ありがとうアレハンドロ! – cnak2

答えて

1

クラスの先頭で、これらのプロパティを初期化しませんでした。彼らは、指定されたタイプのそのようなプロパティが存在すると定義しました。しかし、何も実行されていません。

コンパイル時のTypescriptは、基本的にストリップタイプです。だから、実際にはこのようになります:

_menuWidth = 300; // Default menu width 

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

Subjectのコンストラクタを例えばのみ、コンストラクタ内で実行されます。その変数のタイプがSubjectであるとは言えません。

関連する問題