我想声明一个名为Date
的类,它具有Date类型的属性(如在JavaScript Date object的TypeScript接口中。但编译器假定我的属性属于同一类型就像我要宣布的那个班级一样。我怎样才能区分这两个人?
如果Date接口在模块中,我可以使用模块名来区分,但它似乎在全局命名空间中。我的Date
课程在一个模块内。
答案 0 :(得分: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
在过去,我总是将这些课程命名为&#34; DateTime&#34;避免这个问题(并可能造成混淆)。