模块和命名空间,让TS更井然有序
2023-09-13 21:50:58
模块
在 TypeScript 中,模块是代码组织的基本单元,它允许将相关代码分组在一起,以便于管理和重用。模块可以包含函数、类、接口、枚举和变量等元素。要创建一个模块,可以使用以下语法:
module <module-name> {
// 代码
}
例如,以下代码创建一个名为 math
的模块,其中包含两个函数:
module math {
export function add(a: number, b: number): number {
return a + b;
}
export function subtract(a: number, b: number): number {
return a - b;
}
}
为了使用模块中的代码,需要先导入该模块。可以使用以下语法导入模块:
import { <module-name> } from "<module-path>";
例如,以下代码导入 math
模块中的 add
和 subtract
函数:
import { add, subtract } from "./math";
现在就可以在代码中使用 add
和 subtract
函数了:
const result1 = add(1, 2); // 3
const result2 = subtract(4, 3); // 1
命名空间
命名空间是 TypeScript 中另一种组织代码的方式,它允许将相关代码分组在一个逻辑命名空间中。命名空间可以包含模块、类、接口、枚举和变量等元素。要创建一个命名空间,可以使用以下语法:
namespace <namespace-name> {
// 代码
}
例如,以下代码创建一个名为 Shapes
的命名空间,其中包含两个类:
namespace Shapes {
export class Circle {
// 代码
}
export class Square {
// 代码
}
}
为了使用命名空间中的代码,需要先导入该命名空间。可以使用以下语法导入命名空间:
import * as <namespace-name> from "<namespace-path>";
例如,以下代码导入 Shapes
命名空间中的 Circle
和 Square
类:
import * as Shapes from "./shapes";
现在就可以在代码中使用 Shapes.Circle
和 Shapes.Square
类了:
const circle = new Shapes.Circle();
const square = new Shapes.Square();
声明文件
声明文件是一种特殊的文件,它用于声明库和类型的类型信息。声明文件通常以 .d.ts
为后缀名。声明文件中不能包含任何代码实现,只能包含类型信息。声明文件的作用是帮助 TypeScript 编译器理解库和类型的结构和用法,从而避免在编译时出现错误。
例如,以下是一个 math.d.ts
声明文件,其中声明了 math
模块中的 add
和 subtract
函数的类型:
declare module "math" {
export function add(a: number, b: number): number;
export function subtract(a: number, b: number): number;
}
使用声明文件后,TypeScript 编译器就可以在编译时检查代码中对 math
模块的使用是否正确,从而避免出现错误。
总结
在 TypeScript 中,模块和命名空间是组织代码的基本单元,它们有助于将代码分成可重用的单元,使代码更易于维护和理解。声明文件则用于声明库和类型的类型信息,帮助 TypeScript 编译器理解库和类型的结构和用法,从而避免在编译时出现错误。