ObservableとSubjectとasObservableの比較 質問する

ObservableとSubjectとasObservableの比較 質問する

私は RxJs を学習しており、自分の仮定の確認または訂正を求めています。

私は公開読み取り専用サービス クラスのさまざまな場所で使用できるサービス内の observable です.next()。これが適切な方法かどうか疑問に思っています。

private myObservable = new Subject<T>();
public myObservable$: Observable<T> = this.myObservable.asObservable();
  • ユーザーは購読することができますmyObservable$
  • 使うことができますmyObservable.next(...);

完璧に動作しますが、私は自分が無意識のうちに愚か者になっているだけかもしれないと知っているだけの十分な経験があります (RxJS は巨大です)。これは、前述のユースケースにとって正しいパターンと正しいオブジェクトですか?

ベストアンサー1

あなたがやっていることは正しいです。ただし、もう少し短い表記法があります。Subject はすでに Observable なので (Observable クラスを継承しています)、型チェックは TypeScript に任せることができます。

private myObservable = new Subject<T>();
public myObservable$: Observable<T> = this.myObservable;

サービスのコンシューマーは誰でもサブスクライブできますmyObservable$が、TypeScript ではそれが許可されていないため、呼び出すことはできませんmyObservable$.next()(Observable クラスにはメソッドがありませんnext())。

これは実際に推奨される方法であり、RxJS は内部的には決して使用しませんasObservable。詳細な説明については、以下を参照してください。

非常によく似た質問を参照してください:rxjs のサブジェクトはクラス内でパブリックにする必要がありますか?

おすすめ記事