1

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

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定义的片段Math是第三方库,所以我不能重命名Math为不冲突的东西。)

4

2 回答 2

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 
   }
}
于 2013-09-29T08:51:40.517 回答
1

你不能。通过在你的模块上声明一个 Math 变量(你使用的是同一个模块),你用你自己的覆盖了原始的 JS Math 对象。

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

于 2013-09-29T08:16:46.760 回答