集中导入rxjs可租用运算符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集中导入rxjs可租用运算符相关的知识,希望对你有一定的参考价值。

我习惯使用旧的rxjs语法,其中所有方法调用都被链接,并且我可以集中导入所有运算符。

在一个新的应用程序中,我现在开始在Obsrvable上使用管道方法使用“可调运算符”,但我没有成功地集中导入这些运算符。

所以,在某个组件中我使用map和mergeMap,并像这样导入它们:

import { map } from 'rxjs/operators/map';
import { mergeMap } from 'rxjs/operators/mergeMap';

例如,如果我从我的组件文件中删除这些导入并将它们放在我的main.ts中,则编译失败,因为找不到那些方法...这在lettable运算符之前很简单。我错过了什么?

答案

使用旧的运算符,导入它们包括使用新方法对Observable类进行猴子修补。您依赖于在一个文件中导入它们并在单独的文件中使用它们的错误做法。这是一个不好的做法,因为如果,比方说,uniUntilChanged操作符只在一个文件中使用,并且您决定不再使用它,或者只是删除文件,中心位置仍然导入它,什么也不做,使您的包更大比必要的。

现在运营商是独立的顶级功能。您只需要(就像您应该使用旧的那样)在您使用它们的地方导入它们。这是TypeScript所需要的,因此它知道你正在使用哪个函数(几个库的几个顶级函数可以命名为map()或()或filter()),捆绑器也需要知道什么包括在捆绑中。

有关更长的解释,请参阅https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md#why

简而言之,只需习惯它:您在一个模块(即文件)中使用的类,函数,变量和常量必须由该模块导入。

体面的IDE自动添加必要的导入。如果您手动输入进口,那么您需要使用更好的工具。

以上是关于集中导入rxjs可租用运算符的主要内容,如果未能解决你的问题,请参考以下文章

在可管道 rxjs 运算符的组合管道中捕获错误

rxjs中常用的操作符

[RxJS] Implement RxJS `mergeMap` through inner Observables to Subscribe and Pass Values Through(代码片段

[RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through(代码片段

离子:this.http.get(...).map 不是函数

Angular 不会导入显示错误的 Rxjs