ReplaySubject を ストアとして使う

ReplaySubject を ストアとして使う

APIから取得した値を BehaviorSubject に置く使い方があります。

const store = new BehaviorSubject(null);
this.someService.fetchSomeData().subscirbe((someData) => store.next(someData));

JavaScript なら大して問題ないのですが、TypeScript では初期値のnullを型に入れる必要が出て面倒だったりします。

const store = new BehaviorSubject<null|SomeData>(null);

このような場合、 ReplaySubject を使うことで、初期値を持たない方法が取れます。

const store = new ReplaySubject<SomeData>(1);

ReplaySubject はコンストラクタ引数に指定した数だけ直近に流れた値を記憶するので、 1を渡すことで初期値を持たない以外は BehaviorSubject と同じ動作をします。


参考