考虑以下TypeScript:
export namespace Test {
export const test = "test";
}
export namespace Wrapper {
export namespace Test {
export const value = Test.test; // "<script>".Wrapper.Test has no exported member 'test'.
}
}
由于TypeScript编译为JavaScript的方式,Test
中Wrapper
的第二个声明将创建一个新范围,其中Test
仅指向自身。顶级Test
在该范围内不可用,至少根据TypeScript类型检查器。
我从另一种语言生成TypeScript,这种类型的命名空间冲突并不重要。但是,在TypeScript中,它会导致编译错误。应用程序仍在运行,因此这似乎是TypeScript类型检查问题,而不是真正的JavaScript运行时问题。
TypeScript中是否有任何已知的解决方法?
我在Gluon issue设置了一个repro。
答案 0 :(得分:1)
您可以创建别名来克服命名空间冲突:
export namespace Test {
export const test = "test";
}
import _Test = Test;
export namespace Wrapper {
export namespace Test {
export const value = _Test.test;
}
}