TypeScript的官方文档已经更新,但我能找到的中文文档仍然是旧版本。因此,对一些新增和修改的章节进行了翻译和整理。这个翻译是从TypeScript手册中的“模块”一章编译而来的。本文并没有严格按照原文翻译,部分内容也做了说明和补充。模块(Module)JavaScript处理模块化代码的历史由来已久,TypeScript于2012年开始跟进,现在支持多种格式。但随着时间的推移,社区和JavaScript规范已经融合成一种称为ES模块(或ES6模块)的格式,也就是众所周知的导入/导出语法。ES模块于2015年被添加到JavaScript规范中,到2020年,大多数Web浏览器和JavaScript运行时将得到广泛支持。本章将介绍ES模块及其流行的前身CommonJSmodule.exports=语法,您可以在模块一章中找到其他模块模式。JavaScript模块是如何定义的(HowJavaScriptModulesareDefined)在TypeScript中,就像在ECMAScript2015中一样,任何包含顶级导入或导出的文件都被视为一个模块。相应地,一个没有顶级导入和导出声明的文件被认为是一个脚本,它的内容是全局可用的。一个模块将在它自己的范围内执行,而不是在全局范围内。这意味着在模块中声明的变量、函数、类等对模块外部的代码不可见,除非您显式导出这些值。相应地,要消费另一个模块导出的值、函数、类、接口等,也需要先以导入的格式导入。非模块在我们开始之前,我们需要了解TypeScript认为什么是模块。JavaScript规范指出,任何没有导出或顶级等待的JavaScript文件都应被视为脚本,而不是模块。在脚本文件中,变量和类型在共享全局范围内声明,假设您使用outFile编译选项,将多个输入文件组合成一个输出文件,或者使用多个
