【问题标题】:Importing from 'rxjs' with 'rxjs-compat' present as an additional dependency does not make compatible Observables从 'rxjs' 导入并带有 'rxjs-compat' 作为附加依赖项不会使兼容的 Observables
【发布时间】:2019-03-07 01:26:01
【问题描述】:

rxjs 5-6 迁移说明的措辞以及像 this one 这样的博客文章暗示只需将“rxjs-compat”作为我们项目的依赖项与“rxjs”一起导入,然后导入 Observables、Subjects 等from 'rxjs' 将与旧版运算符兼容。例如。 Observable.of(3, 4, 5).concatMap(num => {/*...*/})。然而,这对我们来说似乎并非如此。如果我们直接从 'rxjs-compat' 导入,事情确实会按预期工作,这似乎不是预期的迁移路径,并且也很不方便,因为 'rxjs' 的 TypeScript 声明更完整,并且两者都有导入在同一个文件中的 rxjs' 和 'rxjs-compat' 将来清理起来会有点烦人。是否有额外的步骤,或者是否需要从“rxjs-compat”导入?

【问题讨论】:

    标签: rxjs rxjs-compat


    【解决方案1】:

    只需重构您的代码,不要使用兼容层。

    Observable.of(3, 4, 5).concatMap(num => {/*...*/})
    

    变成

    of(3, 4, 5).pipe(concatMap(num => {/*...*/}))
    

    提前进行重构会更好。

    【讨论】:

    • 不幸的是,代码库相当大,而 rxjs-compat 的吸引力在于它可以实现渐进式迁移,而不是要求我们一次更改所有内容。
    • 当我们从 Angular 5 升级到 6 时,我也有同样的想法。我打算使用兼容层,但我的开发主管告诉我不要。我很高兴我们现在这样做了。编译器告诉我所有需要修复的东西在哪里,半天就搞定了。我认为这种努力是值得的。
    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 2019-03-24
    • 2021-09-13
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多