Переопределение определений типов в TypeScript
Я пытаюсь разработать расширение Chrome в TypeScript. Я установил @types/chrome и все казалось в порядке.
Теперь я хочу использовать https://www.npmjs.com/package/chrome-extension-async, которая предоставляет Promisified версию объектов расширения chrome, что позволяет мне асинхронизировать / ожидать.
Я не могу понять, как включить это расширение, хотя. Документация просто говорит, что я должен добавить <script>
указывая на расширение файла JS. У моего расширения Chrome нет HTML-страниц, поэтому нет <script>
тег.
ОБНОВЛЕНИЕ: следуя совету @basarat, я перестал использовать @types/chrome и добавил chrome-extension-async.d.ts
на мой цконфиг. Typescript не жалуется сейчас, но Chrome делает. Chrome видит старое пространство имен Chrome, а не переопределенное, поэтому, когда он видит chrome.storage.sync.get
звонить без обратного звонка, жалуется.
Если я импортирую расширение, с чем-то вроде
import * as chromeAsync from "chrome-extension-async"
;
импорт работает, но я не могу await chrome.storage.sync.get('field)
потому что TypeScript жалуется (совершенно правильно), что я не передаю обратный вызов.
Я действительно застрял здесь.
2 ответа
импорт работает, но я не могу дождаться chrome.storage.sync.get('field), потому что TypeScript жалуется (совершенно правильно), что я не передаю обратный вызов.
Не использовать @types/chrome
и вместо этого используйте https://github.com/KeithHenry/chromeExtensionAsync/blob/master/chrome-extension-async.d.ts
Больше
Функция также является объектом в TypeScript и вы и делаете любой объект типа "любой". Делая это, он примет любой параметр, который вы передаете этой функции.
попробуйте:<любой>(chrome.storage.sync.get)()