Object.assign指定日期字符串以在模型中键入Date

时间:2018-04-11 18:17:23

标签: typescript angular5

我无法理解为什么我的模型不会抛出错误而是自由地将我从httpClient调用中获得的日期字符串分配给模型中的Date类型。

这是代码



// Data model
export class Data {
  purpose: string = null;
  percentSold: number = null;
  originalTerm: number = null;
  originatedBy: string = null;
  noteDate: Date = null;
  productType: string = null;
  maturityDate: Date = null;
  noteAmount: number = null;
  disburseDate: Date = null;
  interestRate: number = null;
  number: number = null;
  branch: string = null;
  principal: number = null;
  amountAdvanced: number = null;
  code: Code;
  mailingAddress: AccountAddress;

  constructor() {
    this.code = new Code();
    this.mailingAddress = new AccountAddress();
  }
}

let data = new Data();
Object.assign(data, someObjectFromRouteCall);

// data object from Data model has noteDate and disimburseDate still be of type string




1 个答案:

答案 0 :(得分:2)

分配在TypeScript未处于活动状态的运行时发生。它仅在编译期间进行类型检查。

您有两种选择:

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