【发布时间】:2017-08-17 06:59:43
【问题描述】:
我有以下 json:
let JSON_RESPONSE = `{"birthDates": ["2017-01-02","2016-07-15"]}`
我有一个 TypeScript 对象,声明了 Date 数组和一个 ES6 特色构造函数初始化:
class Children {
birthDates: Date[] = []
constructor(values: Object = {}) {
Object.assign(this, values)
}
}
我想从 JSON 输出初始化这个对象:
const children = new Children(JSON.parse(this.JSON_RESPONSE))
children.birthDates.forEach(it => {
console.log(it.getDate())
})
显然它不起作用,因为Children#birthDates 是Object 类型而不是Date。添加显式 new Date() 初始化有助于:
children.birthDates.forEach(it => {
console.log(new Date(it).getDate())
})
问题是如何在对象的构造器阶段轻松地将 JSON 转换为合法的 Date 对象,而无需手动将每个属性映射到 JSON 输入。
显然,Object.assign 不符合我的要求,并使用类型继承执行 shallow 复制而不是 deep。
【问题讨论】:
标签: javascript json angular typescript ecmascript-6