RxJs运营商是否无需修补?
我正在用RxJs 5.5运行angular5,刚刚发现filter之类的操作符不需要导入就可以使用。它们似乎是已知的无需修补的可观察类型的方法。如果这是真的,那么可管道操作符就没有意义了,因为它们通过提供不修补的方法来解决修补全局可观察类型的问题。听起来对吗 如果它是正确的,那么在不导入过滤器的情况下,它是如何工作的呢RxJs运营商是否无需修补?,rxjs,rxjs5,Rxjs,Rxjs5,我正在用RxJs 5.5运行angular5,刚刚发现filter之类的操作符不需要导入就可以使用。它们似乎是已知的无需修补的可观察类型的方法。如果这是真的,那么可管道操作符就没有意义了,因为它们通过提供不修补的方法来解决修补全局可观察类型的问题。听起来对吗 如果它是正确的,那么在不导入过滤器的情况下,它是如何工作的呢 .callFunctionThatReturnsObserable() .filter(x => x == "astring") 如果您从应用程序中的任何位置的“rxjs
.callFunctionThatReturnsObserable()
.filter(x => x == "astring")
如果您从应用程序中的任何位置的“rxjs”(或“rxjs/Rx”)导入Observable,这将为整个应用程序的大多数标准操作符修补Observable 这样做的缺点是在生产生成文件中包含所有操作符,但优点是不需要在任何地方专门导入所需的操作符 如果您在任何地方都更改为从“rxjs/Observable”导入,那么操作符将不再被引入,因此您将需要导入您使用的操作符-但再次注意,您只需要在应用程序中的任何位置导入一次,它们将在全球范围内可用
在RxJS 6/Angular 6中,这一点发生了变化,操作符不再被修补到Observable类型上,而是与Observable
pipe
方法一起使用的独立函数。这样,您就可以从“rxjs”导入Observable,然后在每个使用它们的文件中导入操作符。它更干净,因为你不会在你描述的情况下发现,实际上,不管你是否需要它们,你已经在全球范围内导入了它们。这取决于你如何导入RxJS类/操作符。如果您直接从rxjs
或rxjs/Rx
导入某个地方,并且不使用导入映射,那么您正在导入整个库,该库自动添加所有运算符,如果返回可观察对象的对象导入可观察类型,如:从“rxjs/observable”导入{observable};FunctionthatReturnsAbserable:Observable{return}执行补丁的是什么?从rxjs/Observable
导入就可以了。