2014-05-17 42 views
1

我有两个文件在我的解决方案中包含相同的模块(不同的项目)。 重复模块中的重复标识符

module myModule{ 
    export function doStuff(){} // in here "doStuff" is getting redlined 
} 

这个错误显然是因为我有2个文件与它同一段代码。但是,因为他们没有提到对方或任何事情,所以我不明白他们会发生什么冲突。

回答

1

如果您使用Visual Studio,它会将所有文件视为隐式引用所有TypeScript文件。

因此,如果它认为两个模块具有相同的公共根,它会认为一个是另一个的扩展,并会尝试警告您重复的声明。

虽然你可能会争辩说它们不是同一个模块,但值得从框架类库中得到一些启发,它们很少依赖命名空间来区分两个类,例如以下两个类都可能所谓Command,但他们已通过类名来区分,以及命名空间:

  • System.Data.SqlClient.SqlCommand
  • System.Data.OracleClient.OracleCommand
+1

遗憾的是一个缓慢的屁股。你的回答很好,但它不能解决我的问题。我采用的解决方案是嵌套模块。这可能是也可能不是更好的设计。就个人而言,我认为当从没有任何链接的文件引发错误时,TypeScript会从无关文件中收集太多信息。即使它确实发生在同一页面上,它也不会破坏TS生成的JS所能处理的任何bcos。 – CyberFox