我有以下功能:
function prop<T extends Record<any, any>, K extends keyof T>(key: K): T[K] {
}
const v = prop<{ test: string }>('test')
问题是我必须传递第二个泛型才能正确推断密钥。有什么办法可以跳过第二个泛型并仍然将 key
推断为 keyof T
?
我不想做以下事情:
prop<{ test: string }, 'test'>('test')
答案 0 :(得分:1)
您可以尝试使用这样的默认泛型:
function prop<T extends Record<any, any>, K = keyof T>(key: K): T[K] {
}
const v1 = prop<{ test: string }>('test') // OK
const v2 = prop<{ test: string }>('test12') // ERROR