我正在与没有编译器的项目一起工作。当我想使用外部库并在Visual Studio Code中使用智能感知时,我将需要使用import(不适用于es5)。
示例:我想使用axios库,因此我将其与npm一起安装,将脚本标签引用添加到axios.js,然后在app.js中编写应用程序代码。当我这样做时,我可以得到智能感知
import axios from 'axios';
但是它将在es5中失败。
我确实找到了一种变通的解决方法,可以使我的intellisense不会因es5而失败:
var axios = axios || require('axios').default;
但是至少对我来说,这对我来说似乎太笨拙,仅出于智识:)
我还注意到,例如,jquery intellisense也可以在不导入的情况下工作,并且认为原因是jquery类型定义文件未使用模块语法(导出),并且已将内容添加到全局范围中。所以我也想知道是否可以创建自己的类型定义文件以将事物添加到全局范围中?
答案 0 :(得分:0)
对此进行了进一步调查,发现确实可以创建自己的帮助程序类型定义文件,该文件将模块中的类型导入全局范围,以便在具有全局范围的ES5项目中使用该文件:
在项目中创建文件global.d.ts(名称无关紧要),内容如下:
import { AxiosStatic } from "axios";
declare global {
const axios: AxiosStatic;
}
这将使智能感知在全局上下文中(在我的app.js中)工作,而不必使用import。当然,只有在您确实不能使用模块时才这样做(全局是不好的:))
我将看看我是否可以说服vscode的人(他们在此文本编辑器中做得很出色:)),这对vscode文档也可能很有用(https://github.com/Microsoft/vscode/issues/63494)