在Typescript 3.6.3中,我想为没有@types包可用的模块创建一个声明。
其中一个功能参数在另一个定义了类型的模块中定义。
geobuf.d.ts
import Pbf = require('pbf');
declare module 'geobuf' {
export function encode(obj: any, pbf: Pbf): Uint8Array;
}
但是,当我这样做时,似乎TypeScript想在模块增强模式下运行(这是可以理解的,因为我在声明文件中有导入)。我收到错误消息:
TS2665: Invalid module name in augmentation. Module 'geobuf' resolves to an untyped module at './node_modules/geobuf/index.js', which cannot be augmented.
如何创建一个声明文件,该声明文件还引用现有的Typed代码?
答案 0 :(得分:0)
编写声明declare module 'geobuf'
时,它应该在全局范围内。Typescript将该声明放在global.d.ts
(全局名称空间)中。这是非模块中的顶级声明(其中模块是至少具有一个顶级导入或导出的文件)。
这称为Typescript Module Augmentation
因此,import Pbf = require('pbf');
必须位于该模块声明中。
希望有帮助。