ZetCode

TypeScript 命名空间

最后修改日期:2025 年 2 月 26 日

TypeScript 中的命名空间是一种将代码组织成逻辑组并防止命名冲突的方式。在多个模块或组件可能具有相似名称的大型应用程序中,它们特别有用。本教程涵盖了 TypeScript 命名空间的创建、使用和实际示例。

命名空间允许我们将相关代码分组到单个容器中。它们通过在命名范围中封装变量、函数、类和接口来帮助避免全局作用域污染。命名空间可以嵌套并在多个文件中拆分,以获得更好的组织。

创建命名空间

本示例演示了如何创建和使用简单的命名空间。

basic_namespace.ts
namespace MyNamespace {
    export const message = "Hello from MyNamespace!";

    export function greet(name: string) {
        return `Hello, ${name}!`;
    }
}

console.log(MyNamespace.message);  // Output: Hello from MyNamespace!
console.log(MyNamespace.greet("Alice"));  // Output: Hello, Alice!

namespace 关键字用于定义命名空间。export 关键字使变量、函数或类在命名空间外部可访问。在此示例中,messagegreet 已导出,可以使用命名空间名称访问它们。

嵌套命名空间

本示例演示了如何创建嵌套命名空间。

nested_namespace.ts
namespace OuterNamespace {
    export namespace InnerNamespace {
        export const message = "Hello from InnerNamespace!";
    }
}

console.log(OuterNamespace.InnerNamespace.message);  // Output: Hello from InnerNamespace!

命名空间可以嵌套以创建分层结构。在此示例中,InnerNamespace 嵌套在 OuterNamespace 中。message 变量使用完全限定的命名空间路径进行访问。

跨文件拆分命名空间

本示例演示了如何将命名空间拆分到多个文件中。

file1.ts
namespace MyNamespace {
    export const message = "Hello from file1!";
}
file2.ts
/// <reference path="file1.ts" />

namespace MyNamespace {
    export function greet(name: string) {
        return `Hello, ${name}!`;
    }
}

console.log(MyNamespace.message);  // Output: Hello from file1!
console.log(MyNamespace.greet("Alice"));  // Output: Hello, Alice!

可以使用 /// <reference path="..." /> 指令将命名空间拆分到多个文件中。这使您可以将大型命名空间组织到更小、更易于管理的文件中。在此示例中,file1.tsfile2.ts 贡献了相同的命名空间。

将命名空间与模块结合使用

本示例演示了如何将命名空间与 ES 模块一起使用。

namespace_with_modules.ts
namespace MyNamespace {
    export const message = "Hello from MyNamespace!";
}

export default MyNamespace;
main.ts
import MyNamespace from "./namespace_with_modules";

console.log(MyNamespace.message);  // Output: Hello from MyNamespace!

可以使用 ES 模块导出和导入命名空间。在此示例中,MyNamespace 命名空间从 namespace_with_modules.ts 导出并导入到 main.ts 中。这使您可以在模块化代码库中使用命名空间。

使用命名空间的最佳实践

来源

TypeScript 命名空间文档

在本文中,我们探讨了 TypeScript 命名空间并通过实际示例演示了它们的使用。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出所有 TypeScript 教程