类型 '() => number' 不可分配给类型 'number'

Posted

技术标签:

【中文标题】类型 \'() => number\' 不可分配给类型 \'number\'【英文标题】:Type '() => number' is not assignable to type 'number'类型 '() => number' 不可分配给类型 'number' 【发布时间】:2020-08-07 06:44:27 【问题描述】:

我正在尝试做一些非常简单的事情:

DateToString(date: Date): string 
       let month: number = date.getMonth;
       let day: number = date.getDate;
       let year: number = date.getFullYear;

       return (month + 1) + '/' + day + '/' + year;
   

但是我从标题中得到了错误 “类型 '() => number' 不可分配给类型 'number'”。 相反,如果我尝试使用类型 '() => number' 而不是 'number',则该错误消失并且我得到错误 “运算符 '+' 不能应用于类型 '() => number' 和 'number'”。

在 Typescript 中使用 Vue 和基于类的装饰器。 有什么想法吗?

【问题讨论】:

getMonthgetDategetFullYear 是函数。要调用这些函数,你需要在它们后面加上括号,例如getMonth()。如果您包含括号,您将获得对函数本身的引用。 @HunterMcMillen 非常感谢!我不敢相信这会浪费这么多时间。 【参考方案1】:

getMonth等,必须作为函数调用。

DateToString(date: Date): string 
       let month: number = date.getMonth();
       let day: number = date.getDate();
       let year: number = date.getFullYear();

       return (month + 1) + '/' + day + '/' + year;
   

顺便说一句,已经有一个函数toLocaleDateString() 可以执行您在上面想要执行的操作,尽管它会根据客户端系统的区域设置给出不同的结果——这可能是也可能不是您想要的。

【讨论】:

感谢您的帮助!

以上是关于类型 '() => number' 不可分配给类型 'number'的主要内容,如果未能解决你的问题,请参考以下文章

void' 不可分配给类型为 '(value: User[], index: number) => boolean' 的参数

运行单元测试时,“TS2322:类型 'Timeout' 不可分配给类型 'number'”

“字符串”类型的参数不可分配给“$string”类型的参数 | `$string.$string` | `$string.$number`'

打字稿错误:类型 'string' 不可分配给类型 '"allName" | `allName.$number.nestedArray`' 在反应钩子形式

棱镜:类型“字符串”不可分配给类型“从不”

类型 ref 不可分配给类型 IntrinsicAttributes