简述TypeScript 中的模块是什么?
在TypeScript中,模块是一个强大的方式来组织和封装代码。模块在其自身的作用域内执行,而不是在全局作用域内,这意味着在模块内部声明的变量、函数、类等不会自动成为全局作用域的一部分。这有助于避免全局命名空间的污染,并确保模块的代码可以被重用和维护。
模块的一个关键特性是它们可以导入其他模块导出的功能,也可以导出自己的功能供其他模块使用。这使得开发者可以创建依赖于其他模块的功能的应用程序,同时也可以提供可被其他模块重用的功能。
导出(Export)
在TypeScript模块中,任何声明(比如变量、函数、类、类型别名或接口)都默认是私有的,如果你想在其他模块中访问它们,你需要使用export
关键字将它们标记为公开的。
// someModule.ts
export interface SomeInterface {
// ...
}
export class SomeClass {
// ...
}
export const someVariable = "someValue";
导入(Import)
如果你想在一个模块中使用另一个模块导出的功能,你需要使用import
语句。
// otherModule.ts
import { SomeClass, someVariable } from "./someModule";
const instance = new SomeClass();
console.log(someVariable);
默认导出(Default Export)
每个模块可以有一个default
导出,这通常用于当模块只导出一个主要的东西时。
// defaultExportModule.ts
export default class DefaultClass {
// ...
}
然后可以这样导入:
import DefaultClass from "./defaultExportModule";
模块解析
TypeScript解析模块时,会尝试根据导入语句找到相应的.ts
、.tsx
或.d.ts
文件。如果没有找到,它会尝试加载一个外部模块。模块解析策略可以在tsconfig.json文件中配置,常见的策略有”Node”和”Classic”。
总结
TypeScript中的模块提供了代码封装和重用的强大机制。通过使用模块,开发者可以创建清晰、维护性强的代码基础,这对于开发大型应用程序尤其重要。模块使得管理依赖、声明和使用类型以及组织代码变得更加简单和直观。