有可互操作的浏览器扩展对象的@types吗?

问题描述 投票:0回答:2

我正在使用 Typescript 创建一个与 EdgeChromeFirefox 兼容的浏览器扩展。

我找到了一篇讨论可互操作的浏览器扩展的文章,其中包含此代码的示例:

window.browser = (function () {
  return window.msBrowser ||
    window.browser ||
    window.chrome;
})();

所以我计划创建一个 Browser 类并根据扩展程序所在的浏览器初始化一个属性。像下面的代码:

export class Browser {
    constructor() {}

    public _browser: object = null;
    get browser() : object {
        if (typeof window.chrome !== 'undefined') {
            this._browser = window.chrome;
        }

        if (typeof window.browser !== 'undefined') {
            this._browser = window.browser;
        }
        return this._browser;
    }
}

我能够为 chrome 定义添加 @types/chrome ,这样我就不会抛出异常,但是,我找不到

browser
msBrowser
对象定义的任何类型。或者我可以使用任何建议来执行此操作,而不会在 Typescript 中出现错误。

所以我的问题是有什么类型定义可以用来支持

browser
msBrowser
对象?

typescript types cross-browser browser-extension
2个回答
4
投票

WebExtensions 似乎是跨浏览器扩展开发的最佳选择。我能找到的最流行的 WebExtensions API 类型文件似乎是 https://github.com/kelseasy/web-ext-types。我希望这有帮助。


0
投票

仅用于 7 年后的文档,因为我今天偶然发现了同样的问题,但基本上没有答案。

以下是 chrome 命名空间的类型: https://www.npmjs.com/package/@types/chrome

以下是浏览器命名空间的类型: https://www.npmjs.com/package/@types/firefox-webext-browser

© www.soinside.com 2019 - 2024. All rights reserved.