首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将对象属性名称数组映射到给定对象中的名称指向的值数组

如何将对象属性名称数组映射到给定对象中的名称指向的值数组
EN

Stack Overflow用户
提问于 2022-10-10 05:22:33
回答 1查看 48关注 0票数 2
代码语言:javascript
运行
复制
const obj = { wheels: 4, lights: 2, doors: 4 }

someMapFunction(obj, { 
  props: ["wheel", "lights"], 
  format: (wheels, lights) => `${wheels}-${lights}` // "4-2"
})

我如何键入someMapFunction,以便类型记录知道props只能是obj的键,format函数将接受props数组值在obj中指向的所有值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-10 05:31:50

您可以这样定义函数:

代码语言:javascript
运行
复制
function someMapFunction<
  T, 
  K extends (keyof T)[]
>(obj: T, propsAndFormat: { 
  props: [...K], 
  format: (...args: {
    [I in keyof K]: T[K[I]]
  }) => string 
}) {
  return null!
}

它有两个通用参数TKT描述作为obj传递的对象的类型,而KT键的元组。当我们声明props的参数类型时,我们使用多元元组语法[...K]K推断为元组,而不是和数组,因为顺序很重要。

对于format,我们将其声明为一个https://www.typescriptlang.org/docs/handbook/2/functions.html#rest-parameters,其中元素的顺序和类型由一个元组描述。要创建这个元组,我们可以映射元组K中的元素K,并使用它们提取相应的T类型。

游乐场

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74010494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档