dateISOString(d: any): string {
var nDate = new Date(d);
var tzoffset = nDate.getTimezoneOffset() * 60000;
var localISOTime = (new Date(nDate - tzoffset)).toISOString(); // This line gives error
return localISOTime;
}
解决方案-**添加valueOf()和日期
var localISOTime = (new Date(nDate.valueOf() - tzoffset.valueOf())).toISOString();
8条答案
按热度按时间bvn4nwqk1#
这是另一个发生这种错误的例子,可能对人们有所帮助。
如果您使用 typescript 并试图计算日期之间的差异(在我的情况下,我试图使用数据库中的ISO字符串):
打字机游戏场
它将显示错误。
但是,如果将其放在浏览器控制台或其他节点环境中,则可以使用完全相同的代码
我可能错了,但我相信这是有效的,因为
-
操作符在它的每个操作数上都隐式地使用了valueOf
。因为valueOf
在Date上返回了number
,所以操作有效。然而,typescript不喜欢它,也许有一个编译器选项强制了这个约束,而我没有意识到。
您可以通过显式地使操作数为number(bigint)类型来修复,以便
-
能够工作。固定示例
打字机游戏场
igsr9ssn2#
Number
应为小写:number
.kmb7vmvb3#
我找到的最干净的方法:
https://github.com/microsoft/TypeScript/issues/5710
hfyxw5xn4#
可以将表达式转换为数字。
hm2xizp95#
我在减去两个日期时遇到了这个问题,这个错误一直困扰着我,但是程序仍然按照预期输出。下面是按日期(从最新到最旧)排序对象数组的代码。
第一个月
var Sorted = Data.sort(function(a,b){ return new Date(b.Posted).getTime() - new Date(a.Posted).getTime() })
据我所知,这个错误不会停止编译器/程序的执行;但是,为开发环境提供显式/受控变量类型是更好的做法。
以备将来参考; Javscript & Typescript can be unpredictable,因此使用显式类型和强制转换变量将删除这些警告/错误。
flseospp6#
源代码/应用程序/演示.组件. ts中的错误(...):错误TS2362:算术运算的左侧必须是"any"、"number"或枚举类型。
valueOf()
和日期wlzqhblo7#
我发现这个问题是通过使用.ts文件扩展名而不是.tsx文件扩展名调用的。我最近遇到了这个问题。它解决了我的问题
mzillmmw8#
类型脚本编译器无法找到一个真值来计算,使用valueof方法解决了大多数问题。
在值旁边使用!符号可以解决问题
第一节第一节第一节第一节第一次