父模块中的符号在导出的子模块中不可用

时间:2014-05-09 13:20:31

标签: module typescript

我有类似以下结构的东西

export module Foo {
   export var DEBUG = false;
}

module Foo.Utils {
   export function fooFunc() : void { if(Foo.DEBUG) doIt() }
}

这很好用。我可以毫无问题地做Foo.Utils.fooFunc()

问题在于WebStorm突出了对Foo.Utils的引用,并说“私人成员无法访问"”。然后我尝试导出模块以避免此错误,但现在typescript编译器borks并给我

The property 'DEBUG' does not exist on value of type 'typeof Foo'. 
Warning: Task "typescript:all" failed. Use --force to continue.

为什么会发生这种情况,如何在保持模块非私有的同时实现在子模块中引用Foo.DEBUG的预期目标?

1 个答案:

答案 0 :(得分:1)

如果您想从文件中导出模块但想要它会分成多个部分,您可以执行以下操作:

module Foo {
   export var DEBUG = false;
}

module Foo.Utils {
   export function fooFunc() : void { if(Foo.DEBUG) doIt() }
}

export = Foo;

那就是说。如果您使用的是外部模块,则不需要 来使用内部模块。区别在于:https://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1