简述如何在 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提供了一种强大的代码组织和封装机制,有助于构建大型、维护性高的应用程序。