首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型:使用类型显式导入

类型:使用类型显式导入
EN

Stack Overflow用户
提问于 2018-09-28 13:15:01
回答 1查看 882关注 0票数 2

我在用打字本编写一个网络扩展程序。因为我想同时瞄准Chrome和Firefox,所以我需要这个聚脂填充

导入它看起来如下所示:

代码语言:javascript
复制
import browser from "webextension-polyfill"

打字本抱怨could not find a declaration file for webextension-polyfill。但是有一个具有类型定义的npm模块:@types/firefox-webext-browser。我安装了这个模块。

我需要导入,因为我使用一个绑定程序来打包所有这些代码。如果我没有显式地导入这个多边形填充,绑定器将不会获取依赖项,并且在运行时,这个多边形填充不存在(在铬中是坏的)。

这造成了一种有趣的情况:如果没有导入,类型记录编译器就会自动获取@types包。通过自动完成和正确的类型检查,代码编译时不会出现错误。但在运行时,它不起作用。另一方面,在导入时,编译器警告我他找不到包的类型定义。代码仍在编译,但浏览器的类型为any。所以我没有得到任何自动完成和静态类型检查。

我的问题是:我可以让@types中的包覆盖一个import语句吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 13:40:23

@types/firefox-webext-browserbrowser声明为全局命名空间,但您的导入掩盖了这个全局声明。您需要告诉TypeScript,webextension-polyfill的默认导出与这个全局命名空间相同。您可以通过使用以下代码创建一个单独的文件declarations.d.ts来做到这一点:

代码语言:javascript
复制
declare module "webextension-polyfill" {
    // Refers to the global `browser` and exports it as the default of `webextension-polyfill`.
    export default browser;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52556223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档