更新 Rxjs static merge Observable 到版本 6 语法

update Rxjs static merge Observable to version 6 syntax

如何在 rxjs 6+ 中更新 Observable.merge() 的旧语法? 旧语法如下所示: Observable.merge(...array).map(() => {}); 使用 rxjs 6 的正确语法应该是什么?

import { merge } from 'rxjs';

merge(...array)
  .pipe(
    map(() => {}),
  )

如果 merge 名称与 merge 运算符冲突,您可以重命名它:

import { merge as staticMerge } from 'rxjs';

添加到 martin 的回答:

从 Rxjs 6 开始,您不能像 map 那样直接将运算符链接到 Observable 值上。

您必须 pipe 通过 Observable 值的所有运算符。

用于创建 Observable 的所有内容,如 ofmerge 等,都需要从 'rxjs'

导入

您将使用的每个运算符都将通过 pipe 运算符进行管道传输,并将从 'rxjs/operators'

导入

所以在 Rxjs 5 或之前的版本中:

import { Observable } from 'rxjs';

Observable.merge(...array).map(() => {});

在Rxjs6中会转为:

import { merge } from 'rxjs';
import { map, ... } from 'rxjs/operators';

merge(...array).pipe(
  map(...),
  ...
);

更新:

merge returns an Observable<T> 因此,如果你想 return Observable<CustomType[]> 只需在使用 merge 时指定,如下所示:

merge<CustomType[]>(...array).pipe(
  map(...),
  ...
);