type FormerActions =
| {
type: "ACTION_A"
payload: string
}
| {
type: "ACTION_B"
payload: number
}
type Converter = ...
type ModifiedActions = Converter<FormerActions, "group", "DOMAIN">
//should output
type ModifiedActions =
| {
group: 'DOMAIN'
type: "ACTION_A"
payload: string
}
| {
group: 'DOMAIN'
type: "ACTION_B"
payload: number
}
我想编写一个Converter
“类型函数”,它接受上面列出的参数,并输出与ModifiedActions
相等(或结构相等)的类型。
我知道我可以使用映射类型来添加属性,也许条件类型可以用于分配|
事物?
答案 0 :(得分:2)
尝试
type Id<T> = {[K in keyof T]: T[K]}
type Converter<T, K extends string, V> = T extends any ? Id<Record<K, V> & T> : never
可能?
T
确实distribute对T extends any ? ...
Record<K, V>
类型的想法,然后将Id<T>
中的每个成分与Record<K, V> & T
合并。最后,我使用了{{1}},它只是遍历一个类型并将其作为键值对输出。
所有这一切,我认为,这种类型基本上只相当于{{1}}。分配和合并只是相当漂亮(并且可能避免一些奇怪的边缘情况,尽管它也增加了一些。)
希望有所帮助。祝你好运!