对于大型项目开发来讲,重要的是如何组织和管理代码,TypeScript使用模块和命名空间来组织代码。
模块化是指将一个大的程序文件拆分成许多小的文件,然后将小文件组合起来。模块化的好处是防止命名冲突、代码可复用和高可维护性。
模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入,并以此向其他模块提供相应的功能。
方式一:分别暴露,如代码示例4-47所示。
代码示例4-47
方式二:统一暴露,如代码示例4-48所示。
代码示例4-48
方式三:默认暴露,如代码示例4-49所示。
代码示例4-49
模块导入的方式与ES6中模块导入的方式相同,如代码示例4-50所示。
代码示例4-50
在导入模块时,通过解构赋值的方式获取对象,如代码示例4-51所示。
代码示例4-51
注意: 针对默认暴露还可以直接采用语句import m3 from"./model/m3"导入。
命名空间:在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数、类、接口等放置到命名空间内,同Java的包、.Net的命名空间一样,TypeScript的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象,命名空间内的对象通过export关键字对外暴露。
命名空间和模块的区别:命名空间是内部模块,主要用于组织代码,避免命名冲突;模块ts是外部模块的简称,侧重代码的复用,一个模块里可能会有多个命名空间。
命名空间如代码示例4-52所示。
代码示例4-52