typescript - finns det några @types för interoperabelt webbläsartilläggsobjekt?
Jag skapar en webbläsartillägg som skulle vara kompatibel med Edge, Chrome och Firefox med hjälp av Typescript.
Jag har hittat en artikel som diskuterar interoperabla webbläsartillägg som har ett exempel på denna kod:
window.browser = (function () {
return window.msBrowser ||
window.browser ||
window.chrome;
})();
Så jag planerade att skapa en Browser-klass och initiera en egenskap beroende på vilken webbläsare tillägget sitter i. Något liknande koden nedan:
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;
}
}
Jag kunde lägga till @types/chrome för Chrome-definitionen så att det inte skulle ge ett undantag, men jag kunde inte hitta några typer för browser och msBrowser objektdefinition. Eller något förslag jag kan använda för att göra detta utan att få ett fel i Typescript.
Så min fråga är om det finns några typdefinitioner jag kan använda för att stödja browser eller msBrowser-objektet?
Svar #1
WebExtensions verkar vara det bästa valet för utveckling av tillägg som fungerar i flera webbläsare. Den mest populära typfilen jag kan hitta för WebExtensions API verkar vara https://github.com/kelseasy/web-ext-types. Jag hoppas att det är till hjälp.
Svar #2
Bara för dokumentation 7 år senare, eftersom jag snubblade över samma fråga idag, som i princip är obesvarad.
Här är typerna för chrome-namespace: https://www.npmjs.com/package/@types/chrome
Här är typerna för webbläsarens namnrymd: https://www.npmjs.com/package/@types/firefox-webext-browser