我已尝试根据此讨论(https://github.com/Microsoft/TypeScript/issues/9)在TypeScript中创建一个扩展方法,但无法创建一个有效的方法。

这是我的代码,

namespace Mynamespace {
    interface Date {
        ConvertToDateFromTS(msg: string): Date;
    }

    Date.ConvertToDateFromTS(msg: string): Date {
        //conversion code here
    }

    export class MyClass {}
}

但它不起作用。

最佳答案

您需要更改原型(prototype):

interface Date {
    ConvertToDateFromTS(msg: string): Date;
}

Date.prototype.ConvertToDateFromTS = function(msg: string): Date {
    // implement logic
}

let oldDate = new Date();
let newDate = oldDate.ConvertToDateFromTS(TS_VALUE);

尽管看起来您想要对Date对象使用静态工厂方法,在这种情况下,您最好执行以下操作:
interface DateConstructor {
    ConvertToDateFromTS(msg: string): Date;
}

Date.ConvertToDateFromTS = function(msg: string): Date {
    // implement logic
}

let newDate = Date.ConvertToDateFromTS(TS_VALUE);

关于typescript - 如何在TypeScript中为 'Date'数据类型创建扩展方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38434337/

10-09 20:57