我的vs代码中的自动导入建议为rxjs运算符和CanActivate接口使用不明确的导入语句

时间:2019-02-15 23:14:29

标签: angular typescript visual-studio-code rxjs

我在我的角度服务中使用了rxjs map和switchMap运算符,而vs代码建议我从以下2条导入语句中进行选择。我没有注意到太多,但是选择了第一个选项并继续。没有编译时错误。但是出现了运行时错误,无论如何也无法帮助我理解实际问题。在花费了几个小时之后,我认为可能是import语句的原因,并将其更改为后者的建议,并且有效。这两种进口有什么区别?什么是内部rxjs运算符?我们可以在任何地方使用它们吗?

import { switchMap } from 'rxjs/internal/operators/switchMap';
import { switchMap } from 'rxjs/operators';

CanActivate接口也发生了同样的事情。以下是2个import语句。只有后者在工作。第一个给出编译时错误,这再次没有任何帮助。

import { CanActivate } from '@angular/router/src/utils/preactivation'; 
import { CanActivate } from '@angular/router';

1 个答案:

答案 0 :(得分:1)

是的,您在自动导入时也要小心,它们过去也曾咬住我。

尝试仅从公共API自动导入。除非您真的知道发生了什么,否则通常标记为Internal的任何东西都应该远离。自从rxjs(v6)的最新重大更新以来,它们确实解决了来自许多来源的所有怪异进口问题。您有99%的时间想从'rxjs'或'rxjs / operators'中为操作员导入。

我不知道您可以在vscode中调整任何设置,或多或少只是您需要关注的内容。如果您导入任何东西,并且看起来超过两个层次,我会非常警惕使用它。通常,它是顶级导入(如“ rxjs”)或两级导入(如“ @ angular / router”);