打字稿使用可选的泛型

时间:2021-04-29 08:48:59

标签: typescript

我有以下功能:

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')

1 个答案:

答案 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