【问题标题】:Centrally importing rxjs lettable operators集中导入 rxjs lettable 操作符
【发布时间】:2018-08-14 00:09:10
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: rxjs rxjs-lettable-operators


    【解决方案1】:

    对于旧的运算符,导入它们包括用新方法对 Observable 类进行猴子修补。您依赖于将它们导入一个文件并在单独的文件中使用它们的不良做法。这是一种不好的做法,因为假设 distinctUntilChanged 运算符仅在一个文件中使用,而您决定不再使用它,或者干脆删除文件,中心位置仍然会导入它,这会导致您的包更大不必要的。

    现在运算符是独立的顶级函数。您只需(就像您应该对旧的那样)将它们导入到您使用它们的位置。这是 TypeScript 需要的,以便它知道您正在使用哪个函数(几个库的几个顶级函数可以命名为 map() 或 of() 或 filter()),并且捆绑器还需要知道什么包含在捆绑包中。

    请参阅https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md#why 以获得更详细的说明。

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2018-04-21
      • 1970-01-01
      • 2018-05-13
      • 2018-06-10
      • 1970-01-01
      • 2018-05-01
      • 2016-11-06
      相关资源
      最近更新 更多