TypeScript的初学习(4)
14.命名空间
内部模块,现在称为“命名空间”,外部模块则简称为“模块”。
namespace Validation { export interface StringValidator { isAcceptable(s: string): boolean; } }
别名:简化命名空间的操作方法:import q=x.y.z
15.命名空间和模块
命名空间是位于全局命名空间下的一个普通的带有名字的js对象。可以把所有的依赖都放在HTML的script标签中。
区别:模块可以声明它的依赖。
命名空间和模块的陷阱:
1.对模块的使用 ///<reference>
2.不必要的命名空间
3.模块的取舍:ts与js文件一一对应。
16.模块解析
编译器在查找导入模块内容时所遵循的流程。
1.引入非相对的,则编译器会尝试定位一个外部模块声明。引入非相对的。
2.模块解析策略
Classic和Node。--moduleResolution
标记来指定使用哪种模块解析策略。--module AMD | System | ES2015
时的默认值为Classic,其他情况为Node。
附加的模块解析标记:使用baseURL、路径映射、利用rootDirs指定虚拟目录
{ "compilerOptions": { "rootDirs": [ "src/views", "generated/templates/views" ] } }
跟踪模块解析:--traceResolution
使用--noResove:告诉编译器不要添加任何不是在命令行上传入的文件到编译列表。命令行指定了才会上传。
exclude列表中的模块还会被编译器使用,原因:有些没有涉及到模块解析,则自动包含,排除一个文件的同时需要排除import或者<refrence>指令。
17.声明合并
指的是编译器将针对同一个名字的两个独立声明合并为单一声明,合并后同时拥有原先两个声明的特性。
18.JSX
19.装饰器
20.三斜线指令
包含ML标签的单行注释。注释的内容会作为编译器指令使用。