Observable运算符的显式导入 - 我想要它们

时间:2017-04-23 22:30:13

标签: rxjs observable

开发一个angular / cli应用程序,我在某些时候注意到未能明确导入Observable的运算符,如:

import { Observable } from 'rxjs/Observable';
// import 'rxjs/add/operator/zip';
// import 'rxjs/add/operator/mergeMap';

实际上并不妨碍代码编译。过去就是这种情况,但我不确定是什么导致了这种变化,现在注释掉导入并不会停止编译。

这是我的代码的某处或不良状态的配置吗?我仔细检查过 - 没有一个像import {Observable} from 'rxjs'这样的贪婪导入可能会一次性全局包含所有内容。

如何在必须明确导入单个运算符的情况下恢复以前的行为?我有点喜欢这个要求,因为它表明在输出应用程序中只导入相关的包裹。

1 个答案:

答案 0 :(得分:1)

不要包含整个rxjs - 这是巨大的。

我使用了两种补救措施:

  • 在我的IDE(webstorm)中有一个不允许的配置 包括整个rxjs。

  • 所有运营商'包含在rxjs-extension.ts文件中合并:

    import 'rxjs/add/observable/of';
    import 'rxjs/add/observable/forkJoin';
    import 'rxjs/add/observable/throw';
    import 'rxjs/add/observable/empty';
    
    import 'rxjs/add/operator/catch';
    import 'rxjs/add/operator/concat';
    import 'rxjs/add/operator/delay';
    import 'rxjs/add/operator/distinctUntilChanged';
    import 'rxjs/add/operator/do';
    import 'rxjs/add/operator/filter';
    import 'rxjs/add/operator/finally';
    import 'rxjs/add/operator/first';
    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/mergeMap';
    import 'rxjs/add/operator/pairwise';
    import 'rxjs/add/operator/pluck';
    import 'rxjs/add/operator/publishLast';
    import 'rxjs/add/operator/skip';
    import 'rxjs/add/operator/switchMap';
    import 'rxjs/add/operator/switchMapTo';
    import 'rxjs/add/operator/take';
    import 'rxjs/add/operator/takeWhile';
    import 'rxjs/add/operator/toArray';
    

然后我将此文件包含在app.module.ts和test.ts文件中。