阅读本手册和本引文后:
值得注意的是,在TypeScript 1.5中,命名法已经改变."内部模块"现在是"命名空间"."外部模块"现在只是"模块"
我下的印象是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 };
}
Run Code Online (Sandbox Code Playgroud)
为什么这样?有什么不同?
根据我的理解,外部模块(ES6模块)不会在这里发挥作用.
在TS中指定模块有两种方法:
declare module "buffer" {} // with quotes
Run Code Online (Sandbox Code Playgroud)
和
declare module buffer {} // without quotes
Run Code Online (Sandbox Code Playgroud)
前者(带引号)表示外部模块(ES6模块),目前用于.d.ts文件中将多个ES6模块放在一个文件中:
declare module "buffer" {}
declare module "fs" {}
Run Code Online (Sandbox Code Playgroud)
后者(没有引号)用作命名空间,现在替换为
declare namespace buffer {}
Run Code Online (Sandbox Code Playgroud)
所以,在这句话中:
值得注意的是,在TypeScript 1.5中,命名法已经改变."内部模块"现在是"命名空间"."外部模块"现在只是"模块"
"内部模块"是没有引号的模块,因为它们在1.5之前使用.
有关其他详细信息,请参阅此问
| 归档时间: |
|
| 查看次数: |
3373 次 |
| 最近记录: |