TypeScript 基础指南:模块(Module)

模块(Module)是 TypeScript 中用于组织和封装代码的另一种机制。与命名空间相比,模块采用了 ECMAScript 2015(ES6)标准中定义的模块系统。

在 TypeScript 中,模块使用 export 和 import 关键字来定义和引用模块内部的成员:
// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

export function subtract(a: number, b: number): number {
  return a - b;
}

// app.ts
import { add, subtract } from './math';

console.log(add(2, 3)); // 5
console.log(subtract(5, 3)); // 2
在这个例子中:
1.
math.ts 文件定义了两个导出的函数 add 和 subtract。
2.
app.ts 文件通过 import 关键字导入并使用 math.ts 中定义的函数。
与命名空间相比,模块有以下一些特点和优点:
独立性和封装性
每个模块都是一个独立的单元,可以通过 export 和 import 来控制哪些成员是公开的。
静态分析
模块系统允许 TypeScript 编译器进行静态分析,从而提供更好的类型检查和代码自动补全等功能。
异步加载
模块可以异步加载,这对于构建大型应用程序很有帮助,可以提高应用程序的性能和交互性。
可重用性
模块可以被多个应用程序或库重复使用,提高了代码的可重用性。

TypeScript 支持多种模块系统,包括:

ECMAScript 模块(ES模块)
遵循 ECMAScript 2015(ES6)标准的模块系统。
使用 export 和 import 关键字。
CommonJS 模块
遵循 Node.js 使用的 CommonJS 模块规范。
使用 module.exports 和 require() 函数。
AMD 模块
异步模块定义(Asynchronous Module Definition)规范。
通常与 RequireJS 库一起使用。

开发者可以根据项目需求和使用的库/框架,选择合适的模块系统。TypeScript 提供了良好的支持,确保代码可以无缝地与不同的模块系统集成。 总之,模块是 TypeScript 中另一个重要的组织代码的机制。与命名空间相比,模块提供了更加现代化和灵活的代码封装和共享方式,是构建可伸缩和可重用的 TypeScript 应用程序的关键。