【问题标题】:Type 'number' is not assignable to type 'Date' - Typescript not compiling类型“数字”不可分配给类型“日期” - 打字稿未编译
【发布时间】:2017-01-18 23:06:06
【问题描述】:

我有一个 jquery 计时器插件的以下代码。编译器给了我错误:“类型'数字'不可分配给类型'日期'”

$(function(){
    var note = $('#note'),
        ts = new Date(2012, 0, 1),
        newYear = false;

    if((new Date()) > ts){
        ts = (new Date()).getTime() + 24*60*60*1000; //counting 24 hours
        newYear = false;
    }   

});


        });

    };

【问题讨论】:

  • ts = new Date(2012, 0, 1) 中,ts 是一个日期,但在ts = (new Date()).getTime() + 24*60*60*1000; 中,ts 是一个数字。我可以建议您使用 momentjs 来“玩”日期吗?

标签: javascript jquery typescript


【解决方案1】:

你需要创建一个Date的新实例:

if((new Date()) > ts){
    ts = new Date((new Date()).getTime() + 24*60*60*1000);
    newYear = false;
}

这样ts 会在给定的时间分配一个新的Date
另外,现在不需要创建两个Date 的实例,你可以把它放在一个变量中重复使用:

$(function(){
    var note = $('#note'),
        ts = new Date(2012, 0, 1),
        newYear = false,
        now = new Date();

    if(now > ts){
        ts = new Date(now.getTime() + 24*60*60*1000);
        newYear = false;
    }   
});

【讨论】:

    【解决方案2】:
    let oneweek = new Date((new Date()).setDate(today.getDate() + 7));
    let twoweek = new Date((new Date()).setDate(today.getDate() + 14));
    let onemonth = new Date((new Date()).setDate(today.getMonth() + 1));
    let threemonth = new Date((new Date()).setDate(today.getMonth() + 3));
    

    【讨论】:

    • 写答案时,不要只放一些代码。解释它的工作原理并在需要时提供一些有用的链接,以便 OP 能够真正理解解决方案。
    • 除了kamyl所说的,答案应该解决OP提出的问题。这里的答案似乎是关于如何计算日期增量,但这不是 OP 面临的问题。 OP 的问题是类型检查之一,而不是算术问题。
    猜你喜欢
    • 2020-11-26
    • 2021-10-11
    • 2020-06-29
    • 1970-01-01
    • 2016-10-25
    • 2019-09-25
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    相关资源
    最近更新 更多