更新 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
的所有内容,如 of
、merge
等,都需要从 '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(...),
...
);
如何在 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
的所有内容,如 of
、merge
等,都需要从 '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(...),
...
);