2014-10-27 114 views
4

我想声明一个名为Date的类,该类具有Date类型的属性(如在JavaScript Date object的TypeScript接口中,但编译器假定我的属性的类型与我如何区分两者?与接口名称相同的TypeScript类

如果Date接口在模块中,我可以使用模块名来区分,但它似乎在全局命名空间中。我的Date类是在一个模块内

回答

4

我相信没有特殊的关键字来访问全局命名空间,但下面的作品:

// Create alias (reference) to the global Date object 
var OriginalDate = Date; 

// Make copy of global Date interface 
interface OriginalDate extends Date {} 

module Foo { 
    export class Date { 
     public d: OriginalDate; // <-- use alias of interface here 
     constructor() { 
      this.d = new OriginalDate(2014, 1, 1); // <-- and reference to object here 
     } 
    } 
} 

var bar = new Foo.Date(); 
alert(bar.d.getFullYear().toString()); 

参见:https://github.com/Microsoft/TypeScript/blob/master/src/lib/core.d.ts

在过去,我一直叫这样的类“日期时间”来避免这个问题(和可能的混淆)。

+0

你确定这家公司有效吗?在我的TypeScript中,我无法在名称空间名称和我的类之间区分这种情况。 ps。该链接不起作用 – Devid 2017-02-09 10:27:42

相关问题