类型“数字”不可分配给类型“日期” - 打字稿未编译
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' 不可分配给类型 'string'