将相关代码组织在一起的方式。出现在 ES 模块诞生之前,作为 TypeScript 自己的模块格式而发明的。但是,自从有了 ES 模块,官方已经不推荐使用 namespace 了

namespace 用来建立一个容器,内部的所有变量和函数,都必须在这个容器里面使用:

namespace Utils {
  const PI = 3.14;          // 不 export → 命名空间内部才能用,外面用不了
  export function circle(r: number) { return PI * r * r; }
}
 
Utils.circle(5);   // ✔️
Utils.PI;          // ❌ 报错

namespace 同名的会自动合并