RxJS将Observable <string []>转换为Observable <string>

时间:2018-02-03 19:50:42

标签: typescript rxjs rxjs5

RxJS 5.5.6。我正在尝试将Observable<string[]>转换为Observable<string>

我不确定mergeAll运算符是否是我正在寻找的

const o1: Observable<string[]> = of(['a', 'b', 'c']);
const o2: Observable<string> = o1.pipe(
  mergeAll()
);

Typescript将返回此错误:

Type 'Observable<string | string[]>' is not assignable to type 'Observable<string>'.
  Type 'string | string[]' is not assignable to type 'string'.
    Type 'string[]' is not assignable to type 'string'.

我接收Observable作为参数,我可以改变构造的方式。

1 个答案:

答案 0 :(得分:4)

看起来您已经遇到过已报告的RxJS问题,请参阅https://github.com/ReactiveX/rxjs/issues/2759以及更近期的https://github.com/ReactiveX/rxjs/issues/3290

从评论来看,它似乎不会被修复,直到RxJS 6。

但是,您始终可以使用mergeMap(o => o) / concatMap(o => o)代替mergeAll() / concatAll()

例如:

const o1: Observable<string[]> = of(['a', 'b', 'c']);
const o2: Observable<string> = o1.pipe(
  mergeMap(o => o)
);