Rxjs 扩展可观测并设置外部源

Rxjs 扩展可观测并设置外部源,rxjs,Rxjs,我想扩展Observable并设置另一个源(例如,另一个行为主体) 例如,NgRx正在这里进行: 但是RxJS Observable在“Observable.source”上给出了一个弃用警告: 这段代码使用的是不推荐使用的“Observable.source”-它可以工作: const source: BehaviorSubject<any> = new BehaviorSubject(1); class ObsStore extends Observable<any&g

我想扩展Observable并设置另一个源(例如,另一个行为主体)

例如,NgRx正在这里进行:

但是RxJS Observable在“Observable.source”上给出了一个弃用警告:

这段代码使用的是不推荐使用的“Observable.source”-它可以工作:

const source: BehaviorSubject<any> = new BehaviorSubject(1);

class ObsStore extends Observable<any> {
    constructor() {
        super();
        this.source = source; // Observable.source is deprecated
    }

    // Implement custom methods here
    customMethod1() {}
}

export const obsStore$ = new ObsStore();
obsStore$.subscribe(data => console.log('output', data));

source.next(2);

// output 1
// output 2
const源代码:行为主体
不确定是否需要这样做

下面是一个stackblitz示例:


注意:我想扩展Observable并向其添加一些自定义公共方法。自定义Observable的行为应类似于BehaviorSubject,但不应公开
next
getValue
。实际上只有
管道
,自定义方法应该是公共的。

我从Ben Lesh(RxJS)那里找到了这条推文:

“我强烈建议人们不要从任何库中扩展Observable(或他们不拥有的任何类型)。”

另外,NgRx团队的Alex Okrushko认为NgRx最好不要扩展可观测范围。


组合将更好地工作,并经得起未来的考验。

您能否提供更多的类用例,也许大多数时候您所需要的只是在构造函数中创建或传递源代码,而不是对其进行扩展。
类obstore extends BehaviorSubject怎么样{
?我想说这样做是安全的。@Fan Cheung定制的Observable应该有一个类似于NgRx Store()的API。它是一个扩展Observable的类,并添加了一些其他方法,如
dispatch
select
…我希望能够在自定义Observable的实例上使用
pipe
方法。@satanTime extending BehaviorSubject将在自定义Observable上公开
getValue
next
等方法。I j我们想从Observable和一些自己的方法中公开管道。