没有过载匹配此调用 - moment js

No overload matches this call - moment js

我有以下代码:

const calibrationSpan = parent.CalibrationCycleID;
const lastCalibrationDate = parent.LastCalibrationDate;

const amountSpan: number = CycleCodes[calibrationSpan];

const calibrationDueDate = moment(lastCalibrationDate).add(amountSpan, calibrationSpan[0]).toDate();

console.log('span', calibrationSpan) 
console.log('dues', calibrationDueDate)

return calibrationDueDate;

它告诉我没有重载匹配 momentjs add 函数上的这个调用。如果我记录校准跨度,它是一个字符串,我只是从中获取第一个字符 (d, m, y) 。 但是如果我这样

const calibrationDueDate = moment(lastCalibrationDate).add(amountSpan, "d");

它正常运行。有什么建议吗?

Typescript 不知道 calibrationSpan 类型。您可以强制转换 calibrationSpan[0] as DurationInputArg2 以通知打字稿 calibrationSpan[0] 具有 DurationInputArg2 中的一种类型(例如“d”、“m”、“y”)

第一种方式:

import { DurationInputArg2 } from 'moment';

...

const calibrationDueDate = moment(lastCalibrationDate).add(amountSpan, calibrationSpan[0] as DurationInputArg2).toDate();

...

第二种方式,将 calibrationSpan 转换为 DurationInputArg2[]

import { DurationInputArg2 } from 'moment';

...

const calibrationSpan = parent.CalibrationCycleID as DurationInputArg2[];

...

const calibrationDueDate = moment(lastCalibrationDate).add(amountSpan, calibrationSpan[0]).toDate();

...