键入'数字'不可分配给类型'日期'-Typescript未编译

Type 'number' is not assignable to type 'Date' - Typescript not compiling

本文关键字:日期 -Typescript 编译 类型 可分配 数字 不可分 键入      更新时间:2023-09-26

我有下面的jquery定时器插件代码。编译器给了我错误:"类型‘number’不能分配给类型‘Date’">

$(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;
    }   
});

        });
    };

您需要创建Date:的新实例

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

以这种方式,CCD_ 2被分配有具有给定时间的新的CCD_ 3
此外,现在不需要创建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;
    }   
});

在typescript中分配变量时,显式分配类型可以避免任何混淆。分配时:
ts = new Date(2012, 0, 1)
您避免声明ts是什么类型,并将其留给";编译器";。如果您尝试过:
var ts : number = new Date(2012, 0, 1);
例如(我知道这会占用更多的空间,对不起(,你会得到类似的错误
要解决此问题,您需要为声明添加一个新变量:
ts = new Date(now.getTime() + 24*60*60*1000);
或者更干净地说,您可以避免声明ts并构造:
var note = $('#note')
在您决定了所有值的类型之后。类似于:
if(new Date() > (new Date(2012, 0, 1))
并从那里决定你的";注释";将形成对象。

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