Typescript 与同一文件中的类型别名同名的命名空间
我遇到了一种模式,可以概括为:Typescript 与同一文件中的类型别名同名的命名空间,typescript,Typescript,我遇到了一种模式,可以概括为: 导出命名空间Foo{ 导出枚举条{} } 导出类型Foo=Omit (原代码) 根据我对typescript的初步理解,我认为这是在做: 声明命名空间Foo 使用typeof Foo从该命名空间创建类型 从2中创建的类型中省略Bar,并将此类型别名为identifierFoo 到目前为止还不错,我想,但如果我错了,请纠正我。在这一点上,事情对我来说进入了神奇的领域。这是因为当从另一个文件导入Foo时,以某种方式神奇地导入了命名空间Foo,而不是类型别名Foo。我
导出命名空间Foo{
导出枚举条{}
}
导出类型Foo=Omit
(原代码)
根据我对typescript的初步理解,我认为这是在做:
Foo
typeof Foo
从该命名空间创建类型Bar
,并将此类型别名为identifierFoo
Foo
时,以某种方式神奇地导入了命名空间Foo
,而不是类型别名Foo
。我的问题是:
Foo
,或者这里发生了什么我应该知道的事情Foo
s的原始文件,我们有两个名称相同但没有名称冲突的东西,这有点奇怪吗?名称空间是对象而类型别名是类型这一事实是否避免了冲突关于代码所做的事情,您的想法是正确的
TodoActions
用作类型,因此编译器知道它引用了导出的类型别名
另一个例子:
这里,TodoActions.Type.ADD\u TODO
用于创建属性,因此编译器同样知道它引用了名称空间
如果将鼠标悬停在VS代码中的标识符上,实际上可以看到这一点: