阅读this manual和此引用后:



我的印象是declare module不再使用,并被declare namespace代替,但是在探索node_modules\@types\node\index.d.ts时,我可以看到declare moduledeclare 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/

10-12 02:30