在 TypeScript 中,模块(Modules)用于组织和管理代码。模块可以将相关的代码封装在一起,并提供了一种将代码隔离、重用和组合的机制。
导出(Export)
使用 export 关键字将某个变量、函数或类公开为模块的公共接口,以便其他模块可以使用它们。
// math.ts
export const PI = 3.14;
export function square(x: number): number {
return x * x;
}
export class Circle {
constructor(public radius: number) {}
area(): number {
return PI * this.radius * this.radius;
}
}
导入(Import)
使用 import 关键字来引入其他模块导出的变量、函数或类。
// main.ts
import { PI, square, Circle } from "./math";
console.log(PI); // 3.14
console.log(square(5)); // 25
const circle = new Circle(2);
console.log(circle.area()); // 12.56
默认导出(Default Export)
一个模块可以有一个默认导出,表示模块的主要输出。默认导出可以是任何有效的表达式。
// math.ts
const PI = 3.14;
function square(x: number): number {
return x * x;
}
class Circle {
constructor(public radius: number) {}
area(): number {
return PI * this.radius * this.radius;
}
}
export default Circle;
// main.ts
import Circle from "./math";
const circle = new Circle(2);
console.log(circle.area()); // 12.56
重新导出(Re-export)
可以使用 export 关键字重新导出另一个模块的导出内容。
// math.ts
export const PI = 3.14;
export function square(x: number): number {
return x * x;
}
// advancedMath.ts
export * from "./math";
export function cube(x: number): number {
return x * x * x;
}
// main.ts
import { PI, square, cube } from "./advancedMath";
console.log(PI); // 3.14
console.log(square(5)); // 25
console.log(cube(3)); // 27
模块别名
可以使用 as 关键字给模块指定别名。
import { square as sq } from "./math";
console.log(sq(5)); // 25
模块的默认导入
可以使用 import * as 语法一次性导入一个模块的所有导出内容,并使用一个别名来引用它们。
import * as math from "./math";
console.log(math.PI); // 3.14
console.log(math.square(5)); // 25
TypeScript 的模块系统提供了一种结构化的方式来组织代码,使得代码更加可维护和可重用。通过使用模块,可以将代码分割成多个文件,每个文件专注于解决特定的问题,同时可以在需要的地方导入并使用它们。