Я довольно новичок в TypeScript и пытаюсь сделать автоматические тесты, в которых я вставляю IndexedDB в свой код, но библиотека, которую я использую для макета IDB, не имеет .d.ts
, поэтому я попытался свернутьмой собственный простой файл объявления, чтобы обойти это, который выглядел примерно так:
declare let fakeIndexedDB: IDBFactory;
declare module 'fake-indexeddb' {
export var fakeIndexedDB;
}
Однако, когда я попытался использовать этот тип, я получил ошибку:
type 'typeof import("fake-indexeddb")' is missing the following properties from type 'IDBFactory': cmp, deleteDatabase, open
Наведение мышьюв VSCode похоже, что типом IDBFactory является этот тип из lib.dom.d.ts:
declare var IDBFactory: {
prototype: IDBFactory;
new(): IDBFactory;
};
Но я хотел импортировать тип интерфейса прямо над ним.Как бы я сказал в своем файле декларации, что хочу ссылаться на интерфейс в lib.dom.ts, а не на переменную, которая его использует?Я могу видеть, что jsdom смог создать класс в своих .d.ts, который ссылается на типы DOM как с интерфейсом, так и с var, но они также не используют «объявление модуля».