2

在 Visual Studio Code (VSCode) 中,我使用的是 JavaScript ES5 的遗留应用程序。我注意到 IntelliSense 不适用于我安装的所有类型。Intellisense 适用于全局类型,但不适用于外部类型?由于这是遗留代码,我宁愿不更改源 .js 文件来让 Intellisense 工作。

用于全局类型的 Intellisense,例如 angular 和 jquery,似乎可以工作。但是,用于外部类型的 IntelliSense 不起作用。

在这里你可以看到我安装了四个类型。Angular 和 jQuery 作为全局变量安装。LoDash 和 Ramda 作为外部安装。我创建了一个 jsconfig.json 文件;它是空的。通过拥有 jsconfig.json 文件,IntelliSense 适用于 Angular 和 Jquery,但不适用于 LoDash 和 Ramda。

VSCode 类型

在接下来的两张图片中,您可以看到 Intellisense 正在为 Angular 和 jQuery 工作。

带有 Angular 的 VSCode 类型

带有 jQ​​uery 的 VSCode 类型

现在,我正在使用 LoDash,但 IntelliSense 无法正常工作。

带有 LoDash 的 VSCode 打字

如果我导入 LoDash 库,那么 IntelliSense 就可以工作。由于代码是遗留的 ES5 JavaScript 并且 ES5 不支持导入,因此使用导入不是一个可行的选择。

带有 LoDash 和导入的 VSCode 类型

一个好的测试是让 IntelliSense 为 LoDash 工作。我想输入“_”。并让 VSCode 显示 LoDash 属性和方法的列表,而无需在源代码中包含任何其他代码。

有谁知道如何解决这个问题?如果是这样,请提供对您有用的方法。

资源

巴德开发

4

2 回答 2

3

正如官方 VS Code JS Intellisense 文档中所写,

如果您使用的是 Visual Studio Code 1.8+,则可以交替显式列出要在jsconfig.json.

"typeAcquisition": {
    "include": [
        "lodash"
    ]
}

现在,当您需要或导入 lodash 时,Visual Studio Code 将使用自动下载的库类型文件来提供丰富的智能感知。大多数常见的 JavaScript 库都有可用的类型。

于 2017-04-08T11:36:29.417 回答
0

您可以创建自己的类型定义文件以在全局上下文中导入内容。当您无法使用导入时,这将使智能感知工作。

import { AxiosStatic } from "axios";

declare global {
  const axios: AxiosStatic;
}

另请参阅如何使用 es5 和 Visual Studio Code 获取外部 javascript 库的智能感知

于 2018-11-19T11:46:31.543 回答