`declare namespace`和`declare module`有什么区别?

时间:2017-01-30 09:32:59

标签: typescript

阅读this manual之后的这句话:

  

重要的是要注意在TypeScript 1.5中,命名法有   改变。 “内部模块”现在是“命名空间”。 “外部模块”   现在只是“模块”

我的印象是declare module已不再使用,并被declare namespace取代,但在浏览node_modules\@types\node\index.d.ts时,我可以看到declare module和{{1}使用:

declare namespace

为什么这样?有什么区别?

根据我的理解,外部模块(ES6模块)在这里发挥作用。

1 个答案:

答案 0 :(得分:7)

在TS中指定模块有两种方法:

declare module "buffer" {} // with quotes

declare module buffer {} // without quotes

前者(带引号)表示外部模块(ES6模块),目前在.d.ts文件中用于将多个ES6模块放在一个文件中:

declare module "buffer" {}
declare module "fs" {}

后者(没有引号)用作命名空间,现在替换为

declare namespace buffer {}

所以,在这句话中:

  

重要的是要注意在TypeScript 1.5中,命名法有   改变。 “内部模块”现在是“命名空间”。 “外部模块”   现在只是“模块”

“内部模块”是没有引号的模块,因为它们在1.5之前使用。

有关其他详细信息,请参阅this issue