请参阅TypeScript模块扩展中的隐藏全局

时间:2013-09-29 07:24:25

标签: module typescript

我想扩展一个声明名为Base的变量的现有模块Math。我还想在模块的扩展中使用标准的JS Math对象。这可能吗?

module Base {
   export var Math: number;
}

// Extend module:
module Base {
   function f () {
      var y = Math.PI // how to refer to JS Math object here?
   }
}

(请假设定义Base的{​​{1}}片段是第三方库,因此我无法将Math重命名为不会发生冲突的内容。)

2 个答案:

答案 0 :(得分:4)

只需将其存储在变量中:

module Base {
   export var Math: number;
}

// Extend module:
var TheMath = Math; // Create a variable 
module Base {
   function f () {
      var y = TheMath.PI // now use it 
   }
}

答案 1 :(得分:1)

你做不到。 通过在模块上声明一个Math变量(您使用相同的模块),您可以用自己的方法覆盖原始的JS Math对象。

我会将其重命名为MyMath或其他一些有意义的名称,使用“Math”名称可能会让其他开发人员与原始的JS Math混淆...