web-dev-qa-db-fra.com

Comment créer une méthode d'extension dans TypeScript pour le type de données 'Date'

J'ai essayé de créer une méthode d'extension dans TypeScript basée sur cette discussion (https://github.com/Microsoft/TypeScript/issues/9), mais je n'ai pas pu en créer un qui fonctionne.

Voici mon code,

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

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

    export class MyClass {}
}

mais ça ne marche pas.

15
AhammadaliPK

Vous devez changer le 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);

Bien qu'il semble que vous souhaitiez avoir une méthode d'usine statique sur l'objet Date, auquel cas vous feriez mieux de faire quelque chose comme:

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

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

let newDate = Date.ConvertToDateFromTS(TS_VALUE);
24
Nitzan Tomer