Прототип расширения даты с помощью Typescript интерфейса

#javascript #typescript #interface #prototype #global

#javascript #Дата #интерфейс #typescript

Вопрос:

Я хочу добавить функцию getWeekNumber к прототипу даты в javascript / typescript. Я хочу сделать это с помощью интерфейса, потому что в противном случае я получаю сообщение об ошибке, что он не знает метод getWeekNumber().

Сначала я попробовал использовать стандартный интерфейс даты, подобный этому:

 interface Date {
    getWeekNumber(): number;
}
  

Это привело к тому, что все методы даты больше не могут вызываться.

Я хочу знать, есть ли способ продлить дату с помощью интерфейса.

Ответ №1:

Вы можете сделать это таким образом:

в DateExt.ts:

 interface Date 
{
    getWeekNumber: () => number;
}

Date.prototype.getWeekNumber = function() 
{
    return 123;//your calculations goes here
};
  

в вашем app.ts:

 import './DateExt';

let a = new Date();
console.log(a.getWeekNumber());
  

Комментарии:

1. Проблема с этим решением заключается в том, что все методы Date больше недоступны, например getTime() или getDate()

2. Они доступны. Это проблема с вашей IDE. У меня последняя версия VSCode / Typescript, и это работает как шарм.

3. также произошел сбой моего интерфейса ionic CLI и самого приложения

4. Извините, это моя ошибка. Я экспортировал интерфейс и импортировал его с помощью {Date}