【问题标题】:autoimport in my vs code suggesting ambiguous import statements for rxjs operators and CanActivate interface我的 vs 代码中的自动导入为 rxjs 运算符和 CanActivate 接口建议了模棱两可的导入语句
【发布时间】:2019-07-10 02:58:23
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: angular typescript visual-studio-code rxjs


    【解决方案1】:

    是的,您必须小心自动导入,它们过去也曾让我烦恼。

    尝试仅从公共 API 自动导入。除非你真的知道发生了什么,否则任何标记为内部的东西通常都应该远离。自从 rxjs (v6) 的最新主要更新以来,他们真的从许多来源争论了所有奇怪的导入。 99% 的时间你想从 'rxjs' 或 'rxjs/operators' 导入操作符。

    我不知道您可以在 vscode 中调整的任何设置,这或多或少只是您必须注意的事情。如果您导入任何东西并且它看起来超过两个级别,我会非常谨慎地使用它。一般来说,它是像 'rxjs' 这样的顶级导入或像 '@angular/router' 这样的两级导入;

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2020-12-08
      • 2018-08-20
      • 1970-01-01
      • 2023-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      相关资源
      最近更新 更多