使用数组reduce typescript将类型赋予累加器

时间:2019-12-13 11:28:03

标签: javascript arrays typescript reduce

我正在按时间间隔生成带有一些func的对象,它返回 ["00:00","00:30","01:00"] ...,但出于我的目的,我需要拥有obj-map {{"00:00": "00:00"}, {"00:30":"00:30"}, {"01:00":"01:00"}} 我在下面键入reduce函数时遇到麻烦,如何避免使用acc或函数的返回值来避免将any用作acc的类型?

generateTimeIntervals(0, 1440, 30).reduce((acc, val) => {
  acc[val] = val;
  return acc;
}, {})

2 个答案:

答案 0 :(得分:4)

  

如何输入acc或func的返回值,以避免将任何类型用作acc?

您可以通过提供要提供的{}种子的类型来做到这一点,例如Record<string, string>(但此处的确切类型不是重点,重点是分配一个类型是您要求的方式):

let result = generateTimeIntervals(0, 1440, 30).reduce((acc, val) => {
  acc[val] = val;
  return acc;
}, {} as Record<string, string>)

TypeScript将能够充分遵循reduce调用的逻辑,从而根据该逻辑为您键入返回值。


对于您的reduce代码是否也需要进行一些调整,我还是不太清楚,但这是一个不同的问题...

答案 1 :(得分:2)