我正在学习 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
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
假设您真的想显式传递一个类型,我认为extends
在函数调用中不允许使用 using 。
getValues<typeof obj, keyof typeof obj>(obj, ['a'])
添加回答
举报
0/150
提交
取消