1

Ich versuche, eine Chrome-Erweiterung in TypeScript zu entwickeln. Ich habe @ types/chrome installiert und alles schien in Ordnung zu sein.Überschreiben von Typdefinitionen in TypeScript

Jetzt möchte ich chrome-extension-async verwenden, die eine Promisified-Version der Chrome-Erweiterung Objekte zur Verfügung stellt, so dass ich Async/erwarten.

Ich kann jedoch nicht herausfinden, wie diese Erweiterung aktiviert wird. Die Dokumentation sagt nur, dass ich eine <script> hinzufügen sollte, die auf die js-Datei der Erweiterung verweist. Meine Chrome-Erweiterung hat keine HTML-Seiten, daher gibt es kein <script>-Tag.

UPDATE: Nach dem Ratschlag von @basarat habe ich aufgehört, @ types/chrome zu verwenden und fügte chrome-extension-async.d.ts in meine tsconfig ein. Typescript beschweren sich jetzt nicht, aber Chrome tut es. Chrome sieht den alten Chrom-Namespace, nicht den überschriebenen. Wenn er einen chrome.storage.sync.get-Aufruf ohne Rückruf sieht, beschwert er sich.

Wenn ich importieren Sie die Erweiterung, mit so etwas wie

import * as chromeAsync from "chrome-extension-async";

der Import funktioniert, aber ich kann nicht await chrome.storage.sync.get('field), weil TypeScript (zu Recht) beschwert, dass ich keinen Rückruf weitergeben.

Ich bin wirklich hier fest.

Antwort

1

Der Import funktioniert, aber ich kann chrome.storage.sync.get ('field) nicht erwarten, weil TypeScript sich (zu Recht) beschwert, dass ich keinen Callback übergebe.

Dont @types/chrome verwenden und stattdessen https://github.com/KeithHenry/chromeExtensionAsync/blob/master/chrome-extension-async.d.ts

Mehr

Von der Dokumentation enter image description here

+0

I @ types/Chrom deinstalliert haben und hinzugefügt, um die Chrom-Erweiterung-async.d.ts auf meine Dateien in tsconfig.json. Jetzt meldet sich Typoskript nicht mehr, aber Chrome tut es - Chrome sieht Chrome-Extension-Async überhaupt nicht und beschwert sich, dass ich keinen Callback übergebe. – zmbq

0

Funktion ist verwenden auch ein Objekt in Typoskript und Sie und ein beliebiges Objekt vom Typ machen 'any'. Dadurch akzeptiert es alle Parameter, die Sie an diese Funktion übergeben.

Versuch: < any> (chrome.storage.sync.get)()

Verwandte Themen