在 TypeScript 中,命名空间(Namespace)和模块(Module)是两种不同的代码组织方式,用于组织和管理代码结构,避免命名冲突和提高可维护性。虽然它们都可以将代码划分为不同的逻辑单元,但在使用上有一些区别。
1. 命名空间(Namespace)
命名空间是一种将代码逻辑分组的方式,通常用于将相关功能组织在一个全局对象下,防止全局作用域中的变量冲突。命名空间在 TypeScript 中使用 namespace
关键字定义。
特点:
- 内联声明:命名空间中的代码是内联的,意味着它们通常会在一个文件内进行定义,甚至可以在同一个文件的不同部分访问。
- 全局作用域:命名空间的内容是全局可见的,但它通过组织成一个命名空间来避免命名冲突。
- 通常适用于小型项目:对于较小的项目或者需要避免模块化工具时,命名空间较为适用。
示例代码:
namespace MathOperations {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
// 使用命名空间中的方法
let result = MathOperations.add(5, 3);
console.log(result); // 输出 8
解释:
- 这里我们定义了一个
MathOperations
命名空间,并在其中