Typescript Object.assign将日期字符串指定给模型中的日期类型

Typescript Object.assign将日期字符串指定给模型中的日期类型,typescript,angular5,Typescript,Angular5,我很难理解为什么我的模型没有抛出错误,而是将从httpClient调用获得的日期字符串自由分配给模型中的日期类型 这是密码 //数据模型 导出类数据{ 用途:string=null; 销售百分比:数字=空; originalTerm:number=null; 发起人:string=null; noteDate:Date=null; productType:string=null; 到期日期:日期=空; 注金额:数字=null; 支付日期:日期=null; 利率:number=null; 编号:

我很难理解为什么我的模型没有抛出错误,而是将从httpClient调用获得的日期字符串自由分配给模型中的日期类型

这是密码

//数据模型
导出类数据{
用途:string=null;
销售百分比:数字=空;
originalTerm:number=null;
发起人:string=null;
noteDate:Date=null;
productType:string=null;
到期日期:日期=空;
注金额:数字=null;
支付日期:日期=null;
利率:number=null;
编号:编号=空;
分支:string=null;
主体:编号=空;
amountAdvanced:number=null;
代码:代码;
邮寄地址:账户地址;
构造函数(){
this.code=新代码();
this.mailingAddress=新帐户地址();
}
}
让数据=新数据();
分配(数据,someObjectFromRouteCall);

//数据模型中的数据对象的noteDate和disimburseDate仍然是string类型
赋值发生在运行时TypeScript未激活的情况下。它只在编译期间进行类型检查

你有两个选择:

  • 通过JavaScript手动执行类型检查/转换
  • 在服务器端和客户端使用完全相同的类型。如果您选择TypeScript作为后端语言,这可以很容易地实现,但也可以使用其他后端语言,只要您选择的语言有类/接口自动生成器可用。但要从这种方法中获益,您需要不使用
    Date
    对象,而是处理日期字符串

好的,我想了解的是,我是否别无选择,只能手动将每个datestring转换为构造函数中的Date对象不幸的是,您别无选择。但是你可以考虑避免<代码>日期>代码>对象,并坚持日期/时间/日期+时间字符串。虽然
Date
对象提供了一些好处,但它们使事情变得更加复杂。下面是我的后续问题,因为在新的ngx引导程序中,它们只接受日期对象作为其日期字段的输入,是否有一种更快的方法绕过此过程而不是手动方式?以下是DatePicker模块的文档:我知道日期/时间相关控件的标准类型是
date
。但可能其中一些接受日期字符串作为替代值。我对此不确定。如果您选择的控件没有那么灵活,只需为它提供一个
新日期(yourDateString)
即可。当然,在保存表单时,您需要找到一种将其转换回日期字符串的方法。不幸的是,网络技术制造商并没有真正考虑到这类问题。