Как создать метод расширения в TypeScript для типа данных «Дата»

typescript extension-methods

24889 просмотра

1 ответ

1198 Репутация автора

Я пытался создать метод расширения в 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 {}
}

но это не работает.

Автор: AhammadaliPK Источник Размещён: 18.07.2016 10:25

Ответы (1)


26 плюса

85207 Репутация автора

Решение

Вам необходимо изменить прототип:

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);
Автор: Nitzan Tomer Размещён: 18.07.2016 10:29
Вопросы из категории :
32x32