带有动态键的打字稿通用函数

Posted

技术标签:

【中文标题】带有动态键的打字稿通用函数【英文标题】:Typescript generic function with dynamic key 【发布时间】:2022-01-10 14:52:46 【问题描述】:

我想编写一个函数来计算数组中对象属性的总和。我希望它尽可能严格。

现在,我得到了这个:

function sum<T>(arr: T[], key: keyof T) 
  return arr.reduce((curr, next) => curr + next[key], 0);

但是有一个问题是next[key] 是未知的。我想以某种方式指定T extends [key]: number。我想避免使用as

【问题讨论】:

【参考方案1】:

我找到了解决办法

function sum<T extends string>(arr:  [K in T]: number [], key: T) 
  return arr.reduce((curr, next) => curr + next[key], 0);

【讨论】:

感谢这个答案***.com/a/67677787/8001865

以上是关于带有动态键的打字稿通用函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有动态对象键的打字稿

打字稿:React.forwardRef 带有来自@material-ui 的通用道具

具有通用返回类型的打字稿函数

typescript 通用重试函数装饰器(打字稿)

带有打字稿的MongoDB聚合

接受通用参数和字符串数组的打字稿函数