我正在与没有转译器的项目工作。当我想在Visual Studio代码中使用外部库和智能感知时,我需要使用导入(这不适用于es5)。
示例:我想使用app.js库,所以我用npm安装它,将脚本标记引用添加到axios.js中,并用axios编写应用程序代码。当我这样做时,我可以获得智能感知
import axios from 'axios';
但如果使用es5,则会失败。
我确实找到了一个老生常谈的变通办法,让我在使用es5时智能感知将不会失败:
var axios = axios || require('axios').default;
但至少对我来说,这看起来太老套了,只是为了智能感知:)
我还注意到,例如,jquery intellisense也可以在没有导入的情况下工作,我认为原因是jquery类型定义文件不使用模块语法(导出),并且将内容添加到全局作用域。所以我也想知道是否有可能创建我自己的类型定义文件来将内容添加到全局作用域中?
发布于 2018-11-20 18:02:23
进一步研究后发现,您确实可以创建自己的帮助器类型定义文件,将模块中的类型导入全局作用域,以便在全局作用域的ES5项目中使用:
在您的工程中创建文件global.d.ts (名称无关紧要),内容如下:
import { AxiosStatic } from "axios";
declare global {
const axios: AxiosStatic;
}这将使智能感知在全局上下文中工作(在我的app.js中),而不必使用导入。当然,只有当你真的不能使用模块时才这样做(全局是坏的:)
我将看看我是否能说服vscode人员(他们正在出色地使用这个文本编辑器:),这也可能是对vscode文档(https://github.com/Microsoft/vscode/issues/63494)的有用补充。
https://stackoverflow.com/questions/53373960
复制相似问题