我试图创建一个符合此示例的ngx-chart的新日期对象,特别是此代码:
constructor() {
this.data = this.multi.map(group => {
group.series = group.series.map(dataItem => {
dataItem.name = new Date(dataItem.name);
return dataItem;
});
return group;
});
console.log(this.data);
}
我使用new Date((理解,但我一直遇到此错误:"键入'date'不可分配给type'string'。"我也理解(因为这是打字稿(,我只是不明白我应该如何一起处理这两个。在其他示例中,我看到这似乎不是问题。
这是一种类型推理的情况。您不告诉TS是什么类型的"名称"。它看到双引号并渗透了一个字符串。您必须告诉TS这是any
。
您必须创建这样的接口:
interface Multi{
name:String
series: Array<{value: number, name: any}> // <-- note here it's explicitly any
}
然后您使用它:
export var multi: Multi[] = [
{
"name": "Tunisia",
"series": [
{
"value": 3309,
"name": "2016-09-19T10:24:08.741Z"
}
...
]
},
{
"name": "El Salvador",
"series": [
{
"value": 5714,
"name": "2016-09-19T10:24:08.741Z"
},
....
]
}
]
另外,您可以在TS不介意的情况下以不同的方式进行此操作,而不是在Plunker中进行的那个长长的语法:
: this.data = multi.map(group =>
<any>{ // <-- tells TS this is explicitly any
"name": group.name,
"series": group.series.map(s => <any>{"value":s.value, "name":new Date(s.name)})
});