一、什么是 Namespace?
Namespace 是 TypeScript 提供的一种组织代码的机制,用于将逻辑相关的代码分组,避免全局命名空间污染,同时提高代码的可维护性和可读性。
简单来说,Namespace 是一种将变量、函数、类等组织在一起的容器。它和模块(Modules)有些类似,但主要用于更简单的代码组织场景,尤其是在需要向全局暴露 API 的场景下。
二、Namespace 的基本语法
在 TypeScript 中,定义一个 Namespace 的基本语法如下:
namespace MyNamespace {
export class MyClass {
sayHello() {
console.log("Hello from MyNamespace!");
}
}
export function myFunction() {
console.log("This is a function in MyNamespace.");
}
const privateVar = "This is private"; // 无法在命名空间外访问
}
关键点:
-
namespace
关键字:用于声明一个命名空间。 -
export
关键字:将命名空间中的内容导出,使其可以在命名空间外访问。 -
私有变量:未标记为
export
的内容在命名空间外是不可访问的。
使用示例:
const instance = new MyNamespace.MyClass();
instance.sayHello(); // 输出:Hello from MyNamespace!
MyNamespace.myFunction(); // 输出:This is a function in MyNamespace.
三、嵌套 Namespace
Namespace 支持嵌套定义,用于复杂代码的分层组织。例如:
namespace OuterNamespace {
export namespace InnerNamespace {
export class InnerClass {
greet() {
console.log("Hello from InnerNamespace!");
}
}
}
}
// 使用嵌套命名空间
const innerInstance = new OuterNamespace.InnerNamespace.InnerClass();
innerInstance.greet(); // 输出:Hello from InnerNamespace!
这种方式可以用来区分不同的功能模块,但嵌套过深可能会导致代码难以维护。