Typescript 声明模块和导入定义
我已经为一个接口编写了TypeScript类型,该接口可以由多个其他npm包实现(即 这是一个相当长的文件Typescript 声明模块和导入定义,typescript,typescript-typings,Typescript,Typescript Typings,我已经为一个接口编写了TypeScript类型,该接口可以由多个其他npm包实现(即 这是一个相当长的文件 import { EventEmitter } from "events"; import StrictEventEmitter from "strict-event-emitter-types"; export type PeripheralUuid = string; export type Address = string; export type AddressType = "p
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;
// ...
你可以在这里看到所有这些
我无法控制该文件的实现,但我知道它们必须符合这些类型。我正在导入这些文件,并试图告诉typescript,当我导入这些实现时,比如
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
语句并只导出一些东西,它就可以正常工作
是否有任何方法可以导入这些声明并将其重用于多个模块声明