简述如何在 TypeScript 中定义和导入/导出模块?

在TypeScript中,模块的概念与ES6模块标准紧密相连。模块是自声明的,每个文件都被视为一个独立的模块。TypeScript中的模块可以导出或导入变量、函数、类或其他类型,使得代码的组织和复用变得简单高效。

定义模块

在TypeScript文件中,你可以通过export关键字导出模块成员,使其能够被其他模块导入使用。你可以导出声明(如变量、函数、类、接口或类型别名),也可以导出已经声明的模块成员:

// mathUtils.ts

// 导出变量
export const pi = 3.14;

// 导出函数
export function add(x: number, y: number): number {
    return x + y;
}

// 导出类
export class Calculator {
    multiply(x: number, y: number): number {
        return x * y;
    }
}

// 导出接口
export interface MathOperation {
    operate(x: number, y: number): number;
}

导入模块

你可以使用import关键字从其他模块导入所需的成员。导入操作可以是具体成员的导入,也可以是整个模块的导入:

// app.ts

// 导入特定的成员
import { add, Calculator } from "./mathUtils";

console.log(add(1, 2)); // 使用导入的函数

const calc = new Calculator(); // 使用导入的类
console.log(calc.multiply(3, 4));

// 导入整个模块
import * as MathUtils from "./mathUtils";

console.log(MathUtils.add(5, 6)); // 使用模块前缀访问成员

默认导出

每个模块可以有一个默认导出。默认导出使用export default语句,每个模块只能有一个默认导出。默认导出的成员可以在导入时使用任意名称:

// defaultExport.ts
export default class {
    sayHello() {
        console.log("Hello, world!");
    }
}

导入默认导出:

// app.ts
import MyDefaultClass from "./defaultExport";

const myClassInstance = new MyDefaultClass();
myClassInstance.sayHello();

重命名导出和导入

你可以在导出或导入时重命名成员,使用as关键字:

// 重命名导出
export { add as addNumbers } from "./mathUtils";

// 重命名导入
import { addNumbers as add } from "./mathUtils";

通过使用模块,TypeScript提供了一种强大的代码组织和封装机制,有助于构建大型、维护性高的应用程序。

发表评论

后才能评论