RxJs 运算符无需打补丁即可使用?

RxJs operators are available without patching?

我是使用 RxJs 5.5 的 运行 angular5,我发现像 filter 这样的运算符无需导入就可以使用。它们似乎是没有打补丁的 Observable 类型的已知方法。如果这是真的,那么管道运算符就没有意义了,因为它们通过提供不打补丁的方法来解决打补丁全局可观察类型的问题。这听起来正确吗?

如果它是正确的,那么在不导入过滤器的情况下如何工作?

.callFunctionThatReturnsObserable()
.filter(x => x == "astring")

如果您在应用程序的任何地方从 'rxjs'(或 'rxjs/Rx')导入 Observable,这将为您的整个应用程序使用大多数标准运算符修补 Observable。

这样做的缺点是将所有运算符都包含在您的生产构建文件中,但优点是您无需在任何地方专门导入所需的运算符。

如果您更改为从 'rxjs/Observable' 处导入,将不再引入运算符,因此您需要导入您使用的那些 - 但再次注意,您只需导入一次,在您的应用程序中的任何位置,它们将在全球范围内可用。

在 RxJS 6 / Angular 6 中,这发生了变化,运算符不再修补到 Observable 类型,而是与 Observable pipe 方法一起使用的独立函数。有了这个,你从 'rxjs' 导入 Observable,然后在你使用它们的每个文件中导入操作符。它更清晰,因为你不会在你描述的情况下结束,实际上,无论您是否需要它们,您都以某种方式在全球范围内导入了它们。