首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得“webextension”库的工作打字稿

无法获得“webextension”库的工作打字稿
EN

Stack Overflow用户
提问于 2017-10-14 23:18:14
回答 1查看 1.6K关注 0票数 0

目前,我正在尝试将现有的google扩展迁移到类型记录。它在后台脚本中使用‘webextension’库,但在npm中没有该库的定义。

我有以下'webextension-polyfill.d.ts‘文件

代码语言:javascript
复制
interface Window {
    browser: typeof browser;
}

declare namespace browser.tabs {
    export function create(createProperties: chrome.tabs.CreateProperties): Promise<void>
    export function query(queryInfo: chrome.tabs.QueryInfo): Promise<chrome.tabs.Tab[]>
}

declare namespace browser.windows {
    export function getAll(getInfo: chrome.windows.GetInfo): Promise<chrome.windows.Window[]>
    export function create(window?: chrome.windows.CreateData): Promise<void>
}

我的进口看起来是:

代码语言:javascript
复制
import 'webextension-polyfill';

使用库的代码如下所示:

代码语言:javascript
复制
function createTab(url: string) {
    browser.tabs.create({url: url}).then(...)
}

它编译成功,但我得到了运行时错误:

未定义的TypeError:无法读取未定义的属性“制表符”

在DevTools中,我可以看到浏览器是未定义的。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-15 17:43:11

我已经找到了解决办法。

这就是模块定义的工作示例:

webextension-polyfill.d.ts

代码语言:javascript
复制
declare namespace browser.tabs {
    export function create(tabInfo: chrome.tabs.CreateProperties): Promise<void>
    export function query(queryInfo: chrome.tabs.QueryInfo): Promise<chrome.tabs.Tab[]>
}

declare namespace browser.windows {
    export function create(createInfo: chrome.windows.CreateData): Promise<void>
    export function getAll(getInfo: chrome.windows.GetInfo): Promise<chrome.windows.Window[]>
}

declare module 'webextension-polyfill' {
    export = browser;
}

现在我可以导入'webextension-polyfill‘库了:

代码语言:javascript
复制
import * as browser from 'webextension-polyfill';

它起作用了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46750238

复制
相关文章

相似问题

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