vscode-用node_modules定义替换打字稿定义

时间:2018-11-16 10:14:10

标签: javascript typescript visual-studio-code

我是vscode的忠实粉丝。这是我的问题,假设我有这样的代码。

const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))

当我在CMD+Click(在express内)或require函数上get时,将带我进入缓存在主文件夹中的打字稿定义。当我清除缓存时,它将带我进入node_modules内部的定义,并且缓存将重新构建。而在webstorm中,没有typescript缓存,这使我进入了node_modules的定义。是否可以禁用打字稿定义并使用node_modules定义?

as shown in the picture, when I click on <code>express</code> it takes me to tyepscript definition, not the <code>node_modules</code> one.

如图所示,当我单击express时,需要输入打字稿定义,而不是node_modules

有一个名为TypeScript and JavaScript Language Features (vscode.typescript-language-features)的内置扩展名。禁用将起作用?我不知道,但恐怕我会失去javascript的智识。

任何人都知道???

2 个答案:

答案 0 :(得分:1)

缓存最有可能是由上述扩展生成的。您不应该使用它来获取Typescript打字,因为Typescript的智能感知非常容易使用。

不要忘记为每个JS软件包安装类型。

npm install @types/express -D

在Typescript中,您也应该使用import而不是require

import * as express from 'express' 

答案 1 :(得分:1)

“缓存”由称为Automatic Type Acquisition的功能构建。您可以通过将VS Code的typescript.disableAutomaticTypeAcquisition设置为true或创建一个包含jsconfig.json的{​​{1}}文件来禁用它。您仍然必须手动删除以前下载的类型声明,以便链接将您带到实现JavaScript文件。有关其他一些相关信息,请参见this answer