Skip to content

模块

TypeScript 支持模块,允许将代码分割成多个文件,并通过模块来管理。模块可以帮助组织代码,并避免命名冲突。

模块的基本概念

模块是 TypeScript 中重要的概念。模块可以帮助组织代码,并避免命名冲突。模块可以帮助你将代码分割成多个文件,并通过模块来管理。

模块的基本语法如下:

typescript
module MyModule {
    export class MyClass {
        // class implementation
    }
}
  1. module 关键字声明一个模块。
  2. 模块名可以是任意的标识符,但通常使用驼峰命名法。
  3. 模块内部定义的类、接口、变量等等,都可以通过 export 关键字来导出。
  4. 模块外可以通过 import 关键字来导入模块中的导出内容。

导出 (export)

typescript
export class MyClass {
    // class implementation
}

导入 (import)

typescript
import {MyClass} from './MyModule';

const myObject = new MyClass();

默认导出 (export default)

typescript
export default class MyClass {
    // class implementation
}

模块解析策略

TypeScript 编译器使用模块解析策略来确定模块的位置。模块解析策略可以是以下几种:

  1. 基于文件路径:默认情况下,TypeScript 编译器使用基于文件路径的模块解析策略。这种策略要求模块名与模块文件名相同,并且模块文件必须与其所在目录在同一层级。
  2. 基于 baseUrl 和路径映射:使用 baseUrlpaths 配置项可以指定模块的根目录,以及模块名到文件路径的映射。
  3. 基于 Node.js 风格的模块解析:使用 node 配置项可以启用 Node.js 风格的模块解析策略。这种策略允许模块名与文件名不同,并且模块文件可以放在任意位置。
  4. 自定义模块解析策略:可以编写自定义模块解析策略,并通过 resolveModuleName 函数来指定。
  5. 无模块:可以将代码放在一个文件中,而不使用模块。

命名空间 (namespace)

TypeScript 还支持命名空间,允许在一个文件中定义多个模块。命名空间可以帮助组织代码,并避免命名冲突。

typescript
namespace MyNamespace {
    export class MyClass {
        // class implementation
    }
}

命名空间的语法与模块类似,但使用 namespace 关键字而不是 module。命名空间中的内容可以通过 export 关键字来导出,也可以通过 import 关键字来导入。