使用命名导入导入RxJS或'添加'串

时间:2018-04-07 14:31:06

标签: typescript rxjs

使用仅使用字符串导入RxJS函数和方法并使用命名导入导入之间的区别是什么。例如:

使用'添加'字符串:

//Cannot apply indexing with [] to an expression of type 'object'

使用命名导入

import 'rxjs/add/operator/map'

单个方法只能单向工作,但我无法确定如何确定需要导入特定方法的方式。有没有办法确定使用哪种方法,以及有什么区别?

2 个答案:

答案 0 :(得分:4)

第一次导入将使用map方法修补Observable原型,因此它将在此类型的所有实例上可用。

第二个是导入一个可以用一些参数调用的函数,并返回一个Observable。

修补原型不适用于树摇动等问题,因此在最新版本的RxJs中添加了管道方法并且所有导入都被命名。

来自RxJs readme的示例:

import { Observable, Subject, ReplaySubject, from, of, range } from 'rxjs';
import { map, filter, switchMap } from 'rxjs/operators';

range(1, 200)
  .pipe(filter(x => x % 2 === 1), map(x => x + x))
  .subscribe(x => console.log(x));

答案 1 :(得分:1)

rxjs/observable命名空间下的运算符称为pipepable运算符。

这比rxjs/add下的旧补丁运算符更可取。因为修补Observable.prototype使得捆绑器不可能被树震动。其他原因。