TypeScript 命名空间

注意: 如果您是 TypeScript 新手,请先查看我们的 TypeScript 入门 教程。


命名空间用于将相关的变量、函数、接口或类组合在一个名称下。

这是一个简单的命名空间示例。您可以阅读本教程的其余部分了解更多信息。

示例

namespace MathUtils {
  export function add(a: number, b: number): number {
    return a + b;
  }
}

console.log(MathUtils.add(5, 10)); 
// Output: 
// 15

这里,

  • MathUtils 是一个命名空间。
  • add() 是其中的一个函数。
  • export 关键字使函数可以在命名空间外部访问。

命名空间的语法

命名空间的语法是

namespace NamespaceName {
  export function functionName() {
    // function body
  }

  export class ClassName {
    // class body
  }
}

这里,

  • namespace 是定义命名空间的关键字。
  • export 使函数或类可以在命名空间外部可用。

示例 1:带多个函数的命名空间

namespace StringUtils {
  export function toUpper(text: string): string {
    return text.toUpperCase();
  }

  export function toLower(text: string): string {
    return text.toLowerCase();
  }
}

console.log(StringUtils.toUpper("hello")); // HELLO
console.log(StringUtils.toLower("WORLD")); // world

示例 2:带类的命名空间

namespace App {
  export class User {
    constructor(public name: string) {}
    greet() {
      console.log("Hello, " + this.name);
    }
  }
}

const user = new App.User("Alice");
user.greet(); // Hello, Alice

示例 3:嵌套命名空间

namespace Company {
  export namespace HR {
    export class Employee {
      constructor(public name: string) {}
    }
  }
}

const emp = new Company.HR.Employee("John");
console.log(emp.name); // John

何时使用命名空间

当您想

  • 将相关的代码(函数、类等)组合在一起时,命名空间很有用。
  • 当您想避免全局作用域中的命名冲突时。
  • 您正在处理旧项目或不支持 ES6 模块的环境时。

命名空间和模块之间的主要区别

虽然命名空间和模块都可以用于组织代码,但这里有一些区别

命名空间 模块
命名空间是 TypeScript 的一个特性。 模块是 JavaScript 和 TypeScript 的特性。
它们用于在单个文件中组织代码。 它们允许代码跨多个文件进行拆分。
它们在单个文件中使用 export。 它们使用 import 和 export。

阅读更多

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战