Typescript

///

ts 编译器自己提供的一套模块系统(类型共享),可以用于引入类型文件
types会引入 node_modules中对应的 @types/xxx的 .d.ts
image.png
image.png
path则会引入对应的路径的 .d.ts
image.pngimage.png
在不需要支持esmodule的场景下使用,很方便,典型的就是单纯的测试脚本编写,但是需要编辑器的ts编译器能够获取到一些类型定义。

另外 namespace 与 module 也有很大不同,module是一单一文件为范围的,而 namespace 是以这个命名空间的名称为范围的,namespace 与 interface 相同,可以实现同名复写,namespace 可以理解为是 ts 自己的模块系统,ts 在编译时会将散落在各个文件中 同名 namespace 进行整合,之后再按照使用处的引用覆盖的整合范围进行分配。

reference 比较适合小范围的类型共享,如果需要项目全局共享类型,还是老老实实用 tsconfig 定义 files 或者 includes吧。