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

所以在这里我定义了两个类型参数T并且K它们是由 TS 编译器推断的,因为当我调用函数时我没有显式地传入类型。


现在我的问题是,如果我想将类型显式传递给函数,我应该如何重写函数呢?我想这样做是因为我很好奇这里的类型推断是如何工作的


所以这是我的尝试


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

但是编译器并不高兴。存在解析错误Parsing error: '?' expected


胡说叔叔
浏览 59回答 1
1回答

慕妹3242003

假设您真的想显式传递一个类型,我认为extends在函数调用中不允许使用 using 。getValues<typeof&nbsp;obj,&nbsp;keyof&nbsp;typeof&nbsp;obj>(obj,&nbsp;['a'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript