Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Web包在typescript中导入声明的全局变量_Typescript_Webpack_Es6 Modules - Fatal编程技术网

如何使用Web包在typescript中导入声明的全局变量

如何使用Web包在typescript中导入声明的全局变量,typescript,webpack,es6-modules,Typescript,Webpack,Es6 Modules,导入声明的全局变量时遇到问题 在我们的网站上,我们有第三方框架,它只使用标签进行集成,并在窗口上创建全局变量,例如window.thirdParty。所以用法是:thirdParty.methodOne() 我编写了定义文件third-party.d.ts,如下所示: _global_variables__WEBPACK_IMPORTED_MODULE_3__["thirdParty"].methodOne(); 从“/第三方定义/第三方框架”导入{itridpartyframework};

导入声明的全局变量时遇到问题

在我们的网站上,我们有第三方框架,它只使用标签进行集成,并在窗口上创建全局变量,例如
window.thirdParty
。所以用法是:
thirdParty.methodOne()
我编写了定义文件third-party.d.ts,如下所示:

_global_variables__WEBPACK_IMPORTED_MODULE_3__["thirdParty"].methodOne();
从“/第三方定义/第三方框架”导入{itridpartyframework};
导出接口ITrirdPartyFramework{
methodOne():void,
}
然后我有一个文件(global variables.ts),它定义了全局变量:

export declare const第三方:第三方框架;
最后,我想在我的模块中使用它:

import { thirdParty } from './global-variables';

export const myFunction = () => {
    thirdParty.methodOne();
}
问题是webpack将定义编译为常规模块,在运行时出现错误,因为编译后的代码如下所示:

_global_variables__WEBPACK_IMPORTED_MODULE_3__["thirdParty"].methodOne();
而不是

thirdParty.methodOne();

你知道,如何告诉webpack忽略这些定义,或者如何处理这种情况吗

您不必导入*.d.ts文件,它们是全局可见的。
您只能在这些文件中保留类型定义,而不能保留实现

接下来的步骤将解决您的问题:

  • 全局变量.ts重命名为全局变量.d.ts
  • 全局变量中删除
    export
    关键字。d.ts
  • 从“/global variables”中删除行
    import{thirdParty}

  • 在*.d.ts文件中定义全局变量谢谢你的提示,我试过了,但网页包没有编译,它找不到模块:找不到模块:错误:无法解析“我的代码文件.ts”中的“./global variables”。你不必导入*.d.ts文件,它们是全局可见的。您只能在这些文件中保留类型定义,但不能保留implementation1。将global-variables.ts重命名为global-variables.d.ts。2.从全局变量中删除导出关键字。3.删除行“import{thirdParty}from./global variables';”非常感谢@Artem,它确实解决了我的问题。但我不能接受评论作为回答。如果你愿意,你可以把答案贴出来,我会接受的,或者明天我会重写你的答案。