扩展现有对象的属性,如TypeScript中的Date

时间:2012-12-19 11:41:03

标签: typescript

我需要在Date中声明一个静态 MinValue 属性。我的javascript代码看起来像,

Date.MinValue = new Date("someDate");

我在答案中找到了类似的问题但是,这只是添加一个函数而不是属性。而且这些功能也没有定义为静态。所以,这对我没用。

参考链接,

  1. Extending Array in TypeScript
  2. How does prototype extend on typescript?

1 个答案:

答案 0 :(得分:7)

我认为您不能将Date扩展为具有额外的静态属性。您可以按如下方式扩展其原型:

interface Date {
    min: Date;
}

Date.prototype.min = new Date();

var x = new Date();
alert(x.min.toString());

要做你真正想做的事,你实际上必须对lib.d.ts进行更改:

declare var Date: {
    new (): Date;
    new (value: number): Date;
    new (value: string): Date;
    new (year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
    (): string;
    prototype: Date;
    parse(s: string): number;
    UTC(year: number, month: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number;
    now(): number;
    min: Date;
}

在纯JS中执行扩展,除了你的TypeScript生成的JavaScript之外还要加载。

    Date.min = new Date();