来自键值对象的打字稿类型函数

Posted

技术标签:

【中文标题】来自键值对象的打字稿类型函数【英文标题】:Typescript typed function from key value object 【发布时间】:2021-05-06 21:50:53 【问题描述】:

我有一个类似的对象

const lookup = 
  key1: object1,
  key2: object2,
  key3: object3

我需要创建一个接受 key(key1/key2...) 作为第一个参数的函数,并且 typeof object1 作为第二个。

如果我使用 foo(key1, ) 我必须只指定所选对象 (object1) 的参数

【问题讨论】:

你的问题有点难理解,能不能换个方式写? i have to specify only params of selected object是什么意思? Object1 和 object2 有不同的键(例如只有名称和标题),如果我调用 foo('object1', name: '') 我必须指定这个对象的键 主要做法是使用泛型:function foo<K extends keyof typeof lookup>(key: K, obj: (typeof lookup)[K]) . 【参考方案1】:

上面的评论者提出了一个使用泛型的解决方案

function foo<K extends keyof typeof lookup>(key: K, obj: (typeof lookup)[K]) 

【讨论】:

如果它起作用了,你能解释一下它是怎么做的吗?所以它可能会帮助其他面临同样问题的人

以上是关于来自键值对象的打字稿类型函数的主要内容,如果未能解决你的问题,请参考以下文章

使用键值管道进行打字稿类型检查

打字稿:如何制作接受对象的类型,其键匹配通用但所有值都是值参数的映射函数

Typescript 中是不是提供键值对?

打字稿:如何检查一个值是不是是有效的枚举键值? [复制]

将键值对(来自数组的值)添加到数组中的特定对象

Javascript学习语言基础