mergeAll 与可出租运算符(rxjs 5.5+)的工作方式不同吗?

mergeAll not working the same as a lettable operator (rxjs 5.5+)?

在 lettable 运算符之前,代码如下所示:

get someData$(): Observable<Data> {
  return this.dataService.higherOrderDataStream
    .mergeAll()
    .map(...);
}

重构以使用 pipe,我得到一个类型错误,本质上说 Observable<Observable<Data>> 不可分配给类型 Observable<Data>:

get someData$(): Observable<Data> {
  return this.dataService.higherOrderDataStream
    .pipe(
      mergeAll(),
      map(...)
    );
}

但以下工作正常(我假设不应该混合可出租和链式运算符):

get someData$(): Observable<Data> {
  return this.dataService.higherOrderDataStream
    .mergeAll()
    .pipe(
      map(...)
    );
}

我应该使用其他 mergeAll 吗?我使用的是 rxjs/operators 中的那个,我之前使用的是 rxjs/add/operator/mergeAll。我认为这两个实现是等价的。

这是错误还是我使用新的 mergeAll 不正确?

这是 RxJS 5.5 中 mergeAllconcatAll 的已知错误。它将在 RxJS 6 中修复。

有关详细信息,请参阅:https://github.com/ReactiveX/rxjs/issues/2759

几天前合并修复:https://github.com/ReactiveX/rxjs/pull/3321

目前最好使用 mergeMap(o => o)concatMap(o => o)