类型 '() => 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 和基于类的装饰器。 有什么想法吗?
【问题讨论】:
getMonth
、getDate
和 getFullYear
是函数。要调用这些函数,你需要在它们后面加上括号,例如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`' 在反应钩子形式