阅读this manual和此引用后:
我的印象是declare module
不再使用,并被declare namespace
代替,但是在探索node_modules\@types\node\index.d.ts
时,我可以看到declare module
和declare namespace
都被使用了:
declare namespace NodeJS {
export var Console: {
prototype: Console;
new(stdout: WritableStream, stderr?: WritableStream): Console;
}
...
declare module "buffer" {
export var INSPECT_MAX_BYTES: number;
var BuffType: typeof Buffer;
var SlowBuffType: typeof SlowBuffer;
export { BuffType as Buffer, SlowBuffType as SlowBuffer };
}
为什么这样?有什么不同?
据我了解,外部模块(ES6模块)不参与。
最佳答案
在TS中指定模块的方式有两种:
declare module "buffer" {} // with quotes
和
declare module buffer {} // without quotes
前者(带引号)表示外部模块(ES6模块),当前在
.d.ts
文件中用于将多个ES6模块放在一个文件中:declare module "buffer" {}
declare module "fs" {}
后者(不带引号)被用作 namespace ,现在被替换为
declare namespace buffer {}
因此,在此引用中:
“内部模块”是没有引号的模块,因为它们是在1.5之前使用的。
有关更多详细信息,请参见this issue。
关于typescript - `declare namespace`和 `declare module`有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41932585/