2014-10-01 80 views
1

鉴于以下Typescript它似乎编译具有相同名称的多个变量。Typescript模块编译重复变量

我包括一个简短的例子,假设两个独立的文件使用相同的顶级模块名称。我正在编译成一个文件。

文件1

module Parent { 
    export module Child1 { 
     export class TestClass { 
     } 
    } 
} 

文件2

module Parent { 
    export module Child2 { 
     export class TestClass { 
     } 
    } 
} 

编译为

var Parent; 
(function (Parent) { 
    (function (Child1) { 
     var TestClass = (function() { 
      function TestClass() { 
      } 
      return TestClass; 
     })(); 
     Child1.TestClass = TestClass; 
    })(Parent.Child1 || (Parent.Child1 = {})); 
    var Child1 = Parent.Child1; 
})(Parent || (Parent = {})); 

var Parent; 
(function (Parent) { 
    (function (Child2) { 
     var TestClass = (function() { 
      function TestClass() { 
      } 
      return TestClass; 
     })(); 
     Child2.TestClass = TestClass; 
    })(Parent.Child2 || (Parent.Child2 = {})); 
    var Child2 = Parent.Child2; 
})(Parent || (Parent = {})); 

通知重复var Parent;声明。我如何防止这种情况?或者这不是一个问题?

回答

3

我该如何预防?或者这不是一个问题?

你不能阻止它。它不是一个问题。如果您使用纯JS,你仍然会做你的文件的顶部:

var Parent = Parent || {}; 

打字稿只是被安全+以下允许你做局部范围的变量(如果你仍然会做同样的JS想要一个本地范围)。

var Parent; 
(function (Parent) { 
    // local scope only 
})(Parent || (Parent = {}));