无法为 'webextension-polyfill' 库工作 Typescript 类型
Unable to get work Typescript typings for 'webextension-polyfill' library
目前,我正在尝试将现有的 google chrome 扩展迁移到 Typescript。
它在后台脚本中使用 'webextension-polyfill' 库,但是 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(...)
}
编译成功,但出现运行时错误:
Uncaught TypeError: Cannot read property 'tabs' of undefined
在 DevTools 中我可以看到浏览器未定义。
我做错了什么?
我找到了解决方案。
这是模块定义的工作示例:
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';
有效
目前,我正在尝试将现有的 google chrome 扩展迁移到 Typescript。 它在后台脚本中使用 'webextension-polyfill' 库,但是 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(...)
}
编译成功,但出现运行时错误:
Uncaught TypeError: Cannot read property 'tabs' of undefined
在 DevTools 中我可以看到浏览器未定义。
我做错了什么?
我找到了解决方案。
这是模块定义的工作示例:
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';
有效