类型“字符串”不可分配给类型“日期”[关闭]
Posted
技术标签:
【中文标题】类型“字符串”不可分配给类型“日期”[关闭]【英文标题】:Type 'string' is not assignable to type 'Date' [closed] 【发布时间】:2020-05-20 04:37:01 【问题描述】:我是 TypeScript 的新手。我正在尝试以mm-dd-yyyy
格式获取今天的日期,但出现此错误:
类型“字符串”不可分配给类型“日期”
这是我的代码:
initCalendarYear()
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
if(dd < 10)
dd = '0'+dd;
if(mm < 10)
mm = '0'+mm;
today = mm+'-'+dd+'-'+yyyy;
console.log(today);
它应该是直截了当的。没有火箭科学。请纠正我哪里错了。 我收到以下行的此错误:
dd='0'+dd;
mm='0'+mm;
today = mm+'-'+dd+'-'+yyyy;
我正在寻求帮助:
javascript : Display the current date
【问题讨论】:
考虑到 Typescript 与 JavaScript 的结合是强类型的。因此,当您将 var 声明为 Date 时,您以后不能为其分配字符串。 JS中的这段代码就可以了 我认为您现在应该开始考虑静态语言,您不能将 A 类型的值分配给声明为 B 类型的值的变量。Type 'string' is not assignable to type 'Date'
。在我看来,您应该花时间尝试理解错误消息。
【参考方案1】:
new Date()
是一个日期。您将其分配给var today
,它隐式地将变量的类型设置为Date
。
mm+'-'+dd+'-'+yyyy
是一个字符串。您尝试将其分配给today
,即Date
。它不是一个日期,所以你得到一个错误。您不能更改变量的类型(除非您首先声明它明确允许多种类型)
使用不同的变量名来存储你的字符串。
(你做类似事情的其他变量也是如此)
【讨论】:
【参考方案2】:问题在于 TS 中的严格类型。
今天是 Date
类型,您尝试使用另一种类型重新分配值,在您的情况下是 String
。
在 JS 中可以,但在 TS 中不行。
【讨论】:
以上是关于类型“字符串”不可分配给类型“日期”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
打字稿类型'字符串| null' 不可分配给类型 'string'