Javascript TypeScript:如何显式地将类型传递给该函数的泛型

Javascript TypeScript:如何显式地将类型传递给该函数的泛型,javascript,typescript,Javascript,Typescript,我正在学习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']) 然而

我正在学习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'])

然而,编译器并不高兴。有一个解析错误
解析错误:“?”应该是

假设您真的想显式传递一个类型,我认为在调用函数时不允许使用
扩展

getValues<typeof obj, keyof typeof obj>(obj, ['a'])
getValues(obj,['a']))
getValues<typeof obj, keyof typeof obj>(obj, ['a'])