rxjs v6 中弃用的方法

Deprecated methods in rxjs v6

我尝试使用 combineLatest:

import { combineLatest } from 'rxjs/Observable';

但我收到警告

combineLatest is deprecated: Deprecated in favor of static combineLatest. 

如果我关注the solution provided in the RxJS v5.x to v6 Update Guide as it is stated 然后写

import { combineLatest } from 'rxjs';

然后我收到 tslint 消息:

This import is blacklisted, import a submodule instead

这有点像蛇咬自己的尾巴...

如果我用

import { combineLatest } from 'rxjs/internal/observable/combineLatest';

然后它可以在没有警告消息的情况下工作,但据我所知,不建议导入内部包(如果我错了请纠正我)。

我似乎不能接受禁用 tslint 消息。

示例:

this.Subscription = combineLatest([a,b])
    .pipe(
      map( (...) )
    ).subscribe( (...) );

哪个是合适的解决方案?谢谢。

尝试使用 import { combineLatest } from 'rxjs/index'; 以避免弃用库或列入黑名单的 lint。

看到这个:https://rxjs-dev.firebaseapp.com/api/index/function/combineLatest

由于这是官方文档认可的导入方式combineLatest,tslint 在这里只是愚蠢。

编辑您的 tslint.json 并删除 rxjs "import-blacklist" 条目。

根据@martin 的评论,我已经找到了解决方案:我的原始项目是使用 Angular 6 创建的。当我将 Angular 6 升级到 Angular 7 时,我没有考虑到 tslint.json 已更新。这个文件被简化了,它包括行

"extends": "tslint:recommended"

See here 了解更多详情)。在推荐的 tslint 文件中,包 rxjs 已被排除在黑名单之外。

所以,我有一个旧版本的文件 tslint.json,我更新了它,现在我不再有这个问题了。