如何使用全局扩充在TypeScript 1.8中扩展本机JavaScript类型?

时间:2016-04-28 09:27:37

标签: typescript typescript1.8

我尝试使用TypeScript 1.8中的新全局扩充来扩展本机JavaScript类型,如here所述。但是,当扩展函数返回相同的类型时,我遇到了问题。

Global.ts

str

DateHelper.ts

export {};
declare global {
    interface Date {
        Copy(): Date;
    }
}

if (!Date.prototype.Copy) {
    Date.prototype.Copy = function () {
        return new Date(this.valueOf());
    };
}

我在尝试使用DateHelper.ts中定义的扩展名时遇到以下错误TS2322:

export class DateHelper {
    public static CopyDate(date: Date): Date {
        return date.Copy();
    }
}

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

Global.ts:

interface Date 
{
    Copy: () => Date;
}

Date.prototype.Copy = function() 
{
    return new Date(this.valueOf());
};

在你的DateHelper.ts

import './Global';

export class DateHelper {
    public static CopyDate(date: Date): Date {
        return date.Copy();
    }
}