Typescript - 6. 模块(Modules)

75 阅读2分钟

在 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 的模块系统提供了一种结构化的方式来组织代码,使得代码更加可维护和可重用。通过使用模块,可以将代码分割成多个文件,每个文件专注于解决特定的问题,同时可以在需要的地方导入并使用它们。