Module 请参阅从TypeScript模块扩展隐藏全局

Module 请参阅从TypeScript模块扩展隐藏全局,module,typescript,Module,Typescript,我想扩展一个现有模块Base,该模块声明一个名为Math的变量。我还想在模块的扩展中使用标准的JSMath对象。这可能吗 module Base { export var Math: number; } // Extend module: module Base { function f () { var y = Math.PI // how to refer to JS Math object here? } } (请假设定义Math的Base片段是第三方库,

我想扩展一个现有模块
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?
   }
}
(请假设定义
Math
Base
片段是第三方库,因此我无法将
Math
重命名为不冲突的内容。)

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

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

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


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

只需将其存储在变量中:

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 
   }
}

只需将其存储在变量中:

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 
   }
}

谢谢不幸的是,
Base
是第三方库,其中已经包含名为
Math
的变量。相应地澄清了我的问题。因此,我认为这意味着我不能扩展
Base
,而必须导入它。谢谢。不幸的是,
Base
是第三方库,其中已经包含名为
Math
的变量。相应地澄清了我的问题。因此,我认为这意味着我不能扩展
Base
,但必须导入它。当然。我忘了TypeScript模块是一流的:-)当然。我忘了TypeScript模块是一流的:-)