我正在按时间间隔生成带有一些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;
}, {})
答案 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)
您可以将类型作为参数传递给 reduce
:
let result = generateTimeIntervals(0, 1440, 30).reduce<Record<string, string>>((acc, val) => {
acc[val] = val;
return acc;
}, {})