如果在同一个公共根目录中定义了多个块,则合并枚举,模块和接口。我在语言规范中找不到 common root 的官方定义。
是否比......更复杂。
或者:
(我能想到的唯一复杂因素是,如果一个模块被合并,那么被合并的模块的所有部分的成员将具有相同的公共根,所以当你去的时候它们都会拉上来。)
还有其他类型的共同根吗?
module X {
export interface Y {
name: string;
}
}
module X{
export interface Y {
age: number;
}
}
// X.Y has both name and age properties
答案 0 :(得分:1)
它是图论理论意义上的“共同根”,因为TypeScript模块或程序的任何组合形成了一个声明树(因为任何声明只有一个父声明)。规范2.3节(“声明”)的后半部分确定了如何在建立父关系方面构建树。
我认为规范中的相关短语是声明合并,如果它们具有“相对于公共根的相同限定名称”。定义它的更简单的方法是“相同的完全限定名称”,但是这不会处理声明没有可以从全局范围限定的名称的情况(例如模块内部的未导出接口) )。
唯一的另一个复杂因素是外部模块中存在声明,其中文件的顶层是外部模块本身而不是全局模块:
export var x = 4;
/* Does not actually merge with the global 'Window', because
its parent is the external module */
interface Window {
}