通过属性和属性类型反规范化类型



我有一个简单的类型

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]

最新更新