我正在阅读TypeScript文档,以了解与ES6模块相同的模块。 typescript-modules- TypeScript模块文档。它说:
模块在其自身的作用域中执行,而不是在全局作用域中执行。这意味着在模块中声明的变量、函数、类等,在未使用其中一种导出形式显式导出时,不会在模块外部可见。反过来,要使用从不同模块导出的变量、函数、类、接口等,必须使用其中一种导入形式进行导入。
并且
在TypeScript中,就像在ECMAScript 2015中一样,包含顶级导入或导出的任何文件都被视为模块。相反,没有任何顶级导入或导出声明的文件被视为脚本,其内容在全局范围内可用(因此也可用于模块)。
它说没有导入或导出语句的文件中的任何内容都可以全局使用。但这是不正确的。
模块在其自身的作用域中执行,而不是在全局作用域中执行。这意味着在模块中声明的变量、函数、类等,在未使用其中一种导出形式显式导出时,不会在模块外部可见。反过来,要使用从不同模块导出的变量、函数、类、接口等,必须使用其中一种导入形式进行导入。
并且
在TypeScript中,就像在ECMAScript 2015中一样,包含顶级导入或导出的任何文件都被视为模块。相反,没有任何顶级导入或导出声明的文件被视为脚本,其内容在全局范围内可用(因此也可用于模块)。
它说没有导入或导出语句的文件中的任何内容都可以全局使用。但这是不正确的。
- folder
- script1.js
- script2.js
script1.js
var variable = "你好";
script2.js
console.log(variable);
script1.js
之前运行了script2.js
。你的代码将把variable
导出到全局作用域中,因此可以使用console.log(variable)
在该脚本之外访问它。您可以尝试在控制台中运行该日志语句,它将生成您放置在其中的值。除非您有一些捆绑工具自动从全局范围包装和隔离每个脚本。 - VLAZ