我正在学习 TypeScript,我正在尝试使用映射类型来编写一个函数,该函数只允许用户在对象上确实存在键时从对象中提取值。这是代码
const obj = {
a: 1,
b: 2,
c: 3
}
function getValues<T, K extends keyof T>(obj: T, keys: K[]) {
return keys.map(key => obj[key])
}
getValues(obj, ['a', 'b'])
所以在这里我定义了两个类型参数T并且K它们是由 TS 编译器推断的,因为当我调用函数时我没有显式地传入类型。
现在我的问题是,如果我想将类型显式传递给函数,我应该如何重写函数呢?我想这样做是因为我很好奇这里的类型推断是如何工作的
所以这是我的尝试
getValues<typeof obj, string[] extends keyof typeof obj>(obj, ['a'])
但是编译器并不高兴。存在解析错误Parsing error: '?' expected
慕妹3242003
相关分类