gpt4 book ai didi

typescript - A "Common Root"的完整定义

转载 作者:搜寻专家 更新时间:2023-10-30 21:54:37 25 4
gpt4 key购买 nike

如果在同一个公共(public)根中定义了多个 block ,则合并枚举、模块和接口(interface)。我在语言规范中找不到公共(public)根的官方定义。

有比...更复杂的吗

或者:

  • 模块,
  • 全局范围

(我能想到的唯一复杂情况是,如果一个模块被合并,那么被合并的模块的所有部分的成员将具有相同的公共(public)根,所以它会随着你的进行而全部压缩)。

还有其他的共根吗?

module X {
export interface Y {
name: string;
}
}

module X{
export interface Y {
age: number;
}
}

// X.Y has both name and age properties

最佳答案

它是图论术语意义上的“共同根”,因为 TypeScript 模块或程序的任何组合都形成了一棵声明树(因为任何声明都只有一个父节点)。规范第 2.3 节的后半部分(“声明”)准确定义了如何根据建立父关系构建该树。

我认为此处规范中的相关短语是,如果声明具有“相对于公共(public)根的相同限定名称”,则声明会合并。定义它的更简单的方法是“相同的完全限定名称”,但这不会处理声明没有可以从全局范围限定的名称的情况(例如,模块内未导出的接口(interface)).

唯一的其他复杂情况是当声明存在于外部模块中时,文件的顶层是外部模块本身而不是全局模块:

export var x = 4;

/* Does not actually merge with the global 'Window', because
its parent is the external module */
interface Window {
}

关于typescript - A "Common Root"的完整定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com