类型“字符串”不可分配给类型“日期”[关闭]

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 中不行。

【讨论】:

以上是关于类型“字符串”不可分配给类型“日期”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

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

如何修复“类型'字符串'不可分配给类型'从不'”?

类型“字符串”不可分配给类型“图表类型”

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

键入'键:字符串; ' 不可分配给类型 'Product' Angular 7

构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数