TypeScript 词条目录
前端Wiki/词条/命名空间

命名空间

定义把一组类型与值聚合在命名空间下的旧式代码组织方式

命名空间用 namespace 关键字包裹一组类型、接口与函数,通过 export 决定对外暴露什么。它是模块系统普及前的代码组织方式,常见于声明文件与遗留库,比如 jQuery、D3 的扩展。调用时写 $.ajax 或 D3.scale,编译后表现为一个全局对象或闭包。

现代项目应以 ES 模块为主,命名空间只在维护老代码、给全局变量补声明(declare global)或扩展第三方库类型(declare module)时出现。TS 5.x 依然支持但越来越少推荐,新代码用模块化即可获得更好的 tree-shaking 与作用域隔离。

JavaScript
namespace Utils {
  export function clamp(v: number, min: number, max: number): number {
    return Math.min(max, Math.max(min, v));
  }
  export type ID = number | string;
  const internal = 1;   // 未 export,外部不可见
}

Utils.clamp(5, 0, 3);       // 3
const id: Utils.ID = 'x';   // OK
⚠ 常见误区
🔗 相关词条模块与命名空间声明文件 .d.ts
← 返回来源章节模块与命名空间