Эта проблема вызвана устаревшим обратным синтаксисом функций add, subtract и т. д. в библиотеке моментов. Ниже приведен фрагмент:
moment.d.ts
add(amount?: DurationInputArg1, unit?: DurationInputArg2): Moment;
/**
* @deprecated reverse syntax
*/
add(unit: unitOfTime.DurationConstructor, amount: number|string): Moment;
В моем случае я хотел, чтобы единицы и значение были переменными, поэтому мне пришлось написать функцию для преобразования general
в приемлемые («часы», «минуты» и т. д.).
function convertToDuration (unit: string): Moment.unitOfTime.DurationConstructor {
if(unit == 'seconds' || unit == 'minutes' || unit == 'hours' || unit == 'days' || unit == 'weeks' || unit == 'months'){
return unit;
}
else // Default unit is hours
return 'hours';
}
Теперь для вызова этой функции:
const time = moment().add(expiryTime.value, convertToDuration(expiryTime.unit));
Определение expiryTime в Тип:
interface ExpiryTimeDef {
value: number,
unit: string
}