模块
TypeScript 支持模块,允许将代码分割成多个文件,并通过模块来管理。模块可以帮助组织代码,并避免命名冲突。
模块的基本概念
模块是 TypeScript 中重要的概念。模块可以帮助组织代码,并避免命名冲突。模块可以帮助你将代码分割成多个文件,并通过模块来管理。
模块的基本语法如下:
typescript
module MyModule {
export class MyClass {
// class implementation
}
}module关键字声明一个模块。- 模块名可以是任意的标识符,但通常使用驼峰命名法。
- 模块内部定义的类、接口、变量等等,都可以通过
export关键字来导出。 - 模块外可以通过
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 编译器使用模块解析策略来确定模块的位置。模块解析策略可以是以下几种:
- 基于文件路径:默认情况下,TypeScript 编译器使用基于文件路径的模块解析策略。这种策略要求模块名与模块文件名相同,并且模块文件必须与其所在目录在同一层级。
- 基于 baseUrl 和路径映射:使用
baseUrl和paths配置项可以指定模块的根目录,以及模块名到文件路径的映射。 - 基于 Node.js 风格的模块解析:使用
node配置项可以启用 Node.js 风格的模块解析策略。这种策略允许模块名与文件名不同,并且模块文件可以放在任意位置。 - 自定义模块解析策略:可以编写自定义模块解析策略,并通过
resolveModuleName函数来指定。 - 无模块:可以将代码放在一个文件中,而不使用模块。
命名空间 (namespace)
TypeScript 还支持命名空间,允许在一个文件中定义多个模块。命名空间可以帮助组织代码,并避免命名冲突。
typescript
namespace MyNamespace {
export class MyClass {
// class implementation
}
}命名空间的语法与模块类似,但使用 namespace 关键字而不是 module。命名空间中的内容可以通过 export 关键字来导出,也可以通过 import 关键字来导入。
