Json 类型脚本日期与时间与对象类型不安全

Json 类型脚本日期与时间与对象类型不安全,json,date,typescript,fullcalendar,Json,Date,Typescript,Fullcalendar,我知道。。。这是一个古老而烦人的问题。其中有几个问题。但他们属于一起,因为这是实践中的问题 我找不到对此问题可接受的答案,需要更多解释: 声明: 在TypeScript中,具有日期属性的类 export class A { date: Date; } DB Rest中有一个JSON{“date”:“123456789”}pased和response.JSON() ... let a:A = new A(); ... a = response.json(); 正如所料 还有令人毛骨悚然的

我知道。。。这是一个古老而烦人的问题。其中有几个问题。但他们属于一起,因为这是实践中的问题

我找不到对此问题可接受的答案,需要更多解释:

声明:

在TypeScript中,具有日期属性的类

export class A 
{
  date: Date;
}
DB Rest中有一个JSON
{“date”:“123456789”}
pased和
response.JSON()

...
let a:A = new A();
...
a = response.json();
正如所料

还有令人毛骨悚然的行为,我找不到一个好的、实用的工作流程:

a.date.toISOString() //fail: .toISOString not function (or any other Date functions)
好的-它只是一个空对象。没有日期原型…需要创建新的日期()

这里的问题:这里的TypeScript中的“类型安全”在哪里

也可用于完整日历事件处理,例如

a.date = fullCalendarEventDate; //works
(aka. Moment which dont have a constructor at all?? Does it extend Date?)
最后,出于性能原因,我来到这里:

设d:Date=新日期(); ... d、 设置时间(a.日期);//失败:日期不是数字

最后,我想说:

let dateTmp:Date = new Date(a["date"]);
dateTmp.toISOString();
对于这个问题,这不是最有效、最实用的解决方案

所以你们都知道这个问题,你们可能是一个比我更好的网络开发人员

请告诉我你的技巧,以解决这些问题:

  • JSON日期在TypeScript中切换到FullCalendar并返回到JSON
  • 如何在TypeScript中实现真正的类型安全。 (例如,可能是带有数组和日期创建的VO.constructor?)
  • 为什么我不能像其他类一样使用这些力矩对象?(新力矩())

fullCalendar只使用了moment under the hood(它在一到两种情况下扩展了它(请参阅),这可能适用于您,也可能不适用于您。MomentJS不会“扩展”日期。实际上,您可以将其视为(上级)替换日期。如有必要,您可以将日期对象传递给momentJS以创建新的时刻。moment确实有一个构造函数,但与您展示的不同。请阅读文档。该“技巧”将日期传递到fullCalendar只是为了使用矩对象,因为fullCalendar就是这样使用的。不过,如果您阅读fullCalendar文档,它通常会接受特定格式的日期对象或字符串(基本上是矩构造函数接受的任何格式).最后,我不知道typescript,但我猜在这个类中,你只是创建了一个属性,你想成为一个日期,但这与实际实例化一个对象放在其中不是一回事。感觉你的问题大部分可以通过阅读相关文档而不是猜测来回答。Hanks@ADyson这已经解释过了ns很多。Typescript是另一种情况。我猜我的很多问题都来自于JS libs和TS语言的混合。fullCalendar只使用moment under the hood(它在一个或两个案例中扩展它)(请参阅),这可能适用于您,也可能不适用于您。MomentJS不会“扩展”日期。实际上,您可以将其视为一个(上级)替换日期。如有必要,您可以将日期对象传递给momentJS以创建新的时刻。moment确实有一个构造函数,但与您展示的不同。请阅读文档。该“技巧”将日期传递到fullCalendar只是为了使用矩对象,因为fullCalendar就是这样使用的。不过,如果您阅读fullCalendar文档,它通常会接受特定格式的日期对象或字符串(基本上是矩构造函数接受的任何格式).最后,我不知道typescript,但我猜在这个类中,你只是创建了一个属性,你想成为一个日期,但这与实际实例化一个对象放在其中不是一回事。感觉你的问题大部分可以通过阅读相关文档而不是猜测来回答。Hanks@ADyson这已经解释过了ns很多。Typescript是另一种情况。我猜我的很多问题都来自混合JS libs和TS语言。