Переопределение определений типов в 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)()

Другие вопросы по тегам