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

时间:2017-05-26 14:49:38

标签: typescript types cross-browser browser-extension

我正在使用Typescript创建一个兼容 Edge Chrome Firefox 的浏览器扩展程序。

我找到一篇文章讨论了可以使用此代码示例的可互操作浏览器扩展:

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,这样我就不会抛出异常,但是,我找不到browsermsBrowser对象定义的任何类型。或者我可以使用任何建议,而不会在Typescript中出现错误。

所以我的问题是我可以用来支持browsermsBrowser对象的任何类型定义吗?

1 个答案:

答案 0 :(得分:1)

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