如何实现KeysToValues,以便可以根据第二个参数返回相应的值?
type KeysToValues<T, K> = any
type A = KeysToValues<{a: number, b: string}, ['a', 'b']>
// [number, string]
最后一个我意识到的是....any[]
type KeysToValues<O extends Record<string, any>, K> = K extends [
infer G,
...infer L
]
? G extends keyof O
? L extends (keyof O)[]
? [O[G], ...KeysToValues<O, L>]
: O[G]
: any
: any
type A = KeysToValues<{ a: string }, ['a']>
// [string, ...any[]]
1条答案
按热度按时间aemubtdh1#
您的思路是正确的,但它在列表中显示了
any
,因为您在某个时候返回了any
。只需将any
更改为[]
,以便将空数组连接到结果: