我一直在寻找TypeScript中名称空间和模块的差异,并且碰到一点,即模块是声明性的,而名称空间不是。同样,模块可以以任何顺序导入,而命名空间则不能。那么,模块的“声明性”是什么意思,以及即使以随机顺序导入时它们如何工作?
答案 0 :(得分:1)
您可以将名称空间看作只是包装在其他对象周围的包装对象,因此声明顺序仍然很重要。
模块需要额外的代码才能使其正常工作。
此额外的代码是由模块捆绑程序(例如webpack)在窗口中创建的,并且包含对所有模块的引用。您可以通过打开由webpack生成的JS文件来检查它。
模块的顺序并不重要,因为它们在编译包时都会被注册。