类型“数字”不可分配给类型“日期” - 打字稿未编译

Posted

技术标签:

【中文标题】类型“数字”不可分配给类型“日期” - 打字稿未编译【英文标题】: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 来“玩”日期吗? 【参考方案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 的问题是类型检查之一,而不是算术问题。

以上是关于类型“数字”不可分配给类型“日期” - 打字稿未编译的主要内容,如果未能解决你的问题,请参考以下文章

打字稿:类型'null'不可分配给类型错误

打字稿 - 字符串'不可分配给类型'FC

类型“数字”不可分配给类型“字符串”。如何将数字转换为字符串

打字稿类型'字符串| null' 不可分配给类型 'string'

打字稿,JSON.parse 错误:“类型 'null' 不可分配给类型 'string'。”

打字稿类型“数字”不可分配│键入“字符串”