web-dev-qa-db-ja.com

「日付」データ型のTypeScriptで拡張メソッドを作成する方法

この議論に基づいてTypeScriptで拡張メソッドを作成しようとしました(https://github.com/Microsoft/TypeScript/issues/9)、しかし、機能するものを作成できませんでした。

ここに私のコードがあります、

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

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

    export class MyClass {}
}

しかし、機能していません。

15
AhammadaliPK

プロトタイプを変更する必要があります。

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);
24
Nitzan Tomer