【问题标题】:No overload matches this call - moment js没有重载匹配这个调用 - moment js
【发布时间】:2021-05-05 16:36:55
【问题描述】:

我有以下代码:

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 函数上没有重载匹配这个调用。如果我记录校准跨度,它是一个字符串,我只是从中获取第一个 char (d, m, y) 。 但是,如果我有这样的

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

它按应有的方式运行。有什么建议吗?

【问题讨论】:

    标签: node.js typescript momentjs


    【解决方案1】:

    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();
    
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-14
      • 2020-06-19
      • 2021-12-19
      • 1970-01-01
      • 2022-06-11
      • 2021-10-12
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多