我有一个简单的类型
interface Person {
name: string
age: number
character: {
spending: number
}
}
我希望通过类型操作来创建以下类型,而不是像下面
那样手动联合type DenormalizedPerson =
| { field: 'name'; value: string }
| { field: 'age'; value: string }
| { field: 'character'; value: { spending: number } }
Typescript不允许你通过键绑定两个独立的属性…直接。相反,您可以在反规范化之前创建一个中间类型。
interface Person {
name: string
age: number
character: {
spending: number
}
}
type DenormalizedPerson = {
[p in keyof Person]: {
field: p
value: Person[p]
}
}[keyof Person]