首页 > 解决方案 > RxJS 5.5+ 中带有管道的多播运算符

问题描述

如何使用multicast()RxJS 5.5 中新推荐的方法来使用操作符,即使用pipe()而不是链接操作符?当我尝试connect()像以前一样使用时出现 TypeScript 错误:

const even$ = new Subject();

const connectedSub = interval(500)
    .pipe(
        filter(count => count % 2 === 0),
        take(5),
        multicast(even$)
    )
    .connect();

even$.subscribe(value => console.log(value));

此代码有效,但会产生一个 TypeScript 错误,报告Property 'connect' does not exist on type 'Observable<{}>'.我是否按照我在 RxJS 5.5+ 中的方式使用可连接的 observables?

标签: javascriptangulartypescriptrxjs

解决方案


当前的 - v5.5.10 和 v6.1.0 -pipe类型不知道Observable子类,所以我使用类型断言,如下所示:

const connectedObs = interval(500).pipe(
    filter(count => count % 2 === 0),
    take(5),
    multicast(even$)
) as ConnectableObservable<number>;
const connectedSub = connectedObs.connect();

推荐阅读