VSCode IntelliSense除非在项目中手动导入,否则不建议使用Angular模块

马修·帕奎特(Mathieu Paquette)

首先,您必须了解我正在从IntelliJ切换到VSCode(也许我对IntelliJ寻找模块的方式感到很自在)。

我将主要使用VSCode来开发由Angular CLI生成的Angular应用程序。

从一个新的CLI生成的应用程序开始,在全新的VSCode安装中打开项目(删除了设置和所有扩展名),我意识到我需要在VSCode IntelliSense意识到它们之前手动导入任何Angular模块。

示例:假设我需要创建2个Angular服务。两者都需要HttpClient来获取数据。在第一个上,我更改了构造函数属性以注入它。当按下Quick Fix快捷方式(CTRL +。)时,我只有一个建议是从selenium-webdriver导入HttpClient。

在此处输入图片说明

仍然在第一个服务中,我手动添加了Angular HttpClient导入:

import { HttpClient } from '@angular/common/http';

转到第二项服务,以相同的方式更改构造函数以添加httpClient属性,现在按“快速修复”快捷方式时,我得到了更多结果:

在此处输入图片说明

这是预期的行为还是我做错了?已经在3个不同的系统上尝试过此方法,并且结果相同。我期望IntelliSense会稍微删除有关HttpClient上下文的信息。

这对于任何模块都是相同的,这意味着您需要在VSCode意识到之前手动导入一次。

安德里·楚玛

到目前为止,我发现的唯一解决方案是将Angular包的路径添加到typeRootsof中tsconfig.json这是一个例子:

"typeRoots": ["node_modules/@types", "node_modules/@angular"]

这样,除了node_modules/@typesTypeScript之外,TypeScript还在node_modules/@angular文件夹及其子文件夹中查找类型定义。

根据TypeScript文档

如果typeRoots指定,则仅包含下的软件包typeRoots

我实际上不知道为什么在Angular文档中没有在此问题上提及任何东西,这是正确的,但在键入发现方面听起来有点不完整:

许多库的npm包中都包含定义文件,TypeScript编译器和编辑器都可以在其中找到它们。Angular就是这样一种库。任何Angular应用程序的node_modules / @ angular / core /文件夹都包含多个d.ts文件,这些文件描述了Angular的各个部分。

您无需执行任何操作即可获得包含d.ts文件的库软件包的键入文件。Angular软件包已经包含它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章