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

RxJS convert Observable<string[]> into Observable<string>

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 会 return 这个错误:

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 作为参数,我可以改变构造方式。

您似乎遇到了已报告的 RxJS 问题,请参阅 https://github.com/ReactiveX/rxjs/issues/2759 and even more recent 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)
);