我为接口编写了TypeScript类型,该接口可以由其他多个npm软件包(即Noble bindings)实现。
文件很长
import { EventEmitter } from "events";
import StrictEventEmitter from "strict-event-emitter-types";
export type PeripheralUuid = string;
export type Address = string;
export type AddressType = "public" | "random" | "unknown";
export type Descriptor = string;
export interface Advertisement {
localName: string;
txPowerLevel: number;
serviceUuids: BluetoothServiceUUID[];
manufacturerData?: Buffer;
serviceData?: Buffer;
}
export interface Methods {
init(): void;
startScanning(
serviceUuids: BluetoothServiceUUID[],
allowDuplicates: boolean
): void;
// ...
您可以在这里https://github.com/LukasBombach/sblendid/blob/master/packages/sblendid/types/bindings.d.ts
查看全部内容我无法控制此文件的实现,但是我知道它们必须符合这些类型。我正在导入这些文件,并试图告诉打字稿,当我导入任何这些实现时,例如
import BindingsMacOs from "noble-bindings-macos";
import BindingsWindows from "noble-bindings-windows";
import BindingsLinux from "noble-bindings-linux";
因为我只是这样做,否则会收到错误或警告
现在我想我可以一次将我的类型定义为bindings.d.ts
并编写导入这些绑定的模块声明:
import Bindings from "./bindings"
declare module "noble-bindings-macos" {
export default Bindings;
}
但是我错了:
扩充中无效的模块名称。模块'noble-bindings-macos'解析为'/Users/lbombach/Projekte/DecentEspresso/sblendid/packages/noble-bindings-macos/index.js'中的无类型模块,该模块无法进行扩充。 ts(2665)
如果我删除了import
语句并仅导出了某些内容,则效果很好。
有什么方法可以导入这些声明,并将其重新用于多个模块声明?