Существуют ли какие-либо @types для совместимого объекта расширения браузера?

Я создаю расширение для браузера, которое будет совместимо с Edge, Chrome и Firefox, используя Typescript.

Я нашел статью, в которой обсуждается совместимое расширение браузера, в котором есть образец этого кода:

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;
    }
}

Мне удалось добавить @types/chrome для определения chrome, чтобы я не выдавал исключение, однако я не смог найти никаких типов для определения объекта browser и msBrowser. Или любое предложение, которое я могу использовать, чтобы сделать это, не получая ошибки в Typescript.

Итак, мой вопрос: есть ли какие-либо определения типов, которые я могу использовать для поддержки объекта browser или msBrowser?


person rpmansion    schedule 26.05.2017    source источник


Ответы (1)


WebExtensions кажется лучшим выбором для разработки кросс-браузерных расширений. Самый популярный тип файла, который я могу найти для API WebExtensions, кажется, https://github.com/kelseasy/web-ext-types. Я надеюсь, что это полезно.

person kevintcoughlin    schedule 12.02.2018