目前,我正在尝试将现有的google扩展迁移到类型记录。它在后台脚本中使用‘webextension’库,但在npm中没有该库的定义。
我有以下'webextension-polyfill.d.ts‘文件
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>
}我的进口看起来是:
import 'webextension-polyfill';使用库的代码如下所示:
function createTab(url: string) {
browser.tabs.create({url: url}).then(...)
}它编译成功,但我得到了运行时错误:
未定义的TypeError:无法读取未定义的属性“制表符”
在DevTools中,我可以看到浏览器是未定义的。
我做错了什么?
发布于 2017-10-15 17:43:11
我已经找到了解决办法。
这就是模块定义的工作示例:
webextension-polyfill.d.ts
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‘库了:
import * as browser from 'webextension-polyfill';它起作用了
https://stackoverflow.com/questions/46750238
复制相似问题