(文件)时,是直接返回导入结果的(尽管这个结果可能是不完整的),而不是递归的进行模块的导入操作,还是拿上面的代码举例,假设我们首先导入 A 模块:
A 模块尝试导入 B 模块
由于 B 模块尚未导入,程序开始导入...B 模块
B 模块尝试导入 A 模块
由于 A 模块正在导入,所以程序直接返回当前导入结果(尽管当前结果是不完整的)
将类型 B 加入到 B 模块的导出数据中(export class B)
B 模块导入完成...模块尚未导入,所以我们开始导入 C 模块
C 模块尝试导入 B 模块
由于 B 模块尚未导入,所以我们开始导入 B 模块
B 模块尝试导入 A 模块
由于 A 模块正在导入,所以程序直接返回当前导入结果...A 的定义, 类型 B 可以正常定义导出
B 模块将类型 B 加入到 B 模块的导出数据中(export class B)
B 模块导入完成,继续 C 模块的导入
类型 C 继承 类型 B,尝试在当前...B 模块(B.ts)的话,仍然会遇到导入出错的问题:
B 模块尝试导入 A 模块
由于 A 模块尚未导入,所以我们开始导入 A 模块
A 模块尝试导入 C 模块
由于 C 模块尚未导入,所以我们开始导入