命名空间可以嵌套,嵌套的层数不受限制:
namespace A {
namespace B {
namespace C {
// ...
}
}
}
嵌套的命名空间遵循普通成员一样的规则,要在外面访问被嵌套的命名空间,必须使用关键字 export
:
namespace A {
namespace B {
export let msg = 'hello world';
}
}
// 错误,子命名空间B没有被export
// error TS2339: Property 'B' does not exist on type 'typeof A'
console.log(A.B.msg);
要改正这个错误,只需要在命名空间前加修饰符 export
:
namespace A {
export namespace B {
export let msg = 'hello world';
}
}