【发布时间】:2021-09-16 09:59:39
【问题描述】:
给定一个Person 的接口,我想在此基础上创建一个新接口HasmapOfPersonsOverTime。我将推送 Person 对象的更新(即,如果一个人有生日,我会将新的年龄数字和该人庆祝生日的时间作为对象推送到 age 属性的数组中)。
... 表示其余属性
interface Person {
age:number;
name:string;
...
}
我想要一个看起来像这样的界面:
interface HasmapOfPersonsOverTime {
[id:string]:{
age:[
{
age:number
time:string
}
]
},
name:[
{
name:string
time:string
}
]
},
...
}
并举例说明我想如何使用它:
const list:HasmapOfPersonsOverTime = {
"1515":{
age:[
{
age:24,
time:"2020-03-05T21:53:37"
},
{
age:25,
time:"2021-03-05T18:22:05"
}
],
name:[
{
name:"bar",
time:"1996-03-05T21:53:37"
}
],
...
}
}
我已经走了这么远,但我无法获得属性的类型安全性。我在我想要正确的人属性的地方创建“值”:字符串。
interface Person {
age:number;
name:string;
}
type HasmapOfPersonsOverTime <T extends Object> = Record<string,Record<keyof T, {'value':string,'time':string}[]>>
const list: HasmapOfPersonsOverTime<Person> = {
"1515":{
age:[
{
value:"24",
time:"2020-03-05T21:53:37"
},
{
value:"25",
time:"2021-03-05T18:22:05"
}
],
name:[
{
value:"name",
time:"1996-03-05T21:53:37"
}
]
}
}
【问题讨论】:
标签: typescript typescript-generics