namespace 名字 {
// ...
}
命名空间引入了新的作用域,大括号可以包含任意合法的代码。要在命名空间之外访问命名空间之内的成员,必须使用 export
关键字:
// 定义命名空间 ns
namespace ns {
export let a = 'hello world';
let b = 1;
// 正确,可以访问b,因为函数show和变量b在同一个命名空间之内
function show(){
console.log(b);
}
}
// 正确,a被export,可以在ns之外访问
let c: string = ns.a;
// 错误,b不允许在ns之外访问
// error TS2339: Property 'b' does not exist on type 'typeof ns'
let d: number = ns.b;
对命名空间成员的访问,类似对象成员的访问,都是用点号运算符
.