我目前正在尝试将一些React本机代码转换为Typescript,并且有一些reduce函数会引发错误。如何重写此代码,以便在运行时不会出现类型问题?
我尝试了各种尝试键入函数以及预期输出的方法,但到目前为止还没有运气。
myArray: data.items.reduce( (map: object, obj: myInterface) : object => { map[obj.id] = obj; return map; }, [])
我对象的myArray项目应填充myInterface中定义的项目数组。运行时,我目前收到以下错误。
TypeScript error in MyPath/:
Element implicitly has an 'any' type because expression of type 'number' can't be used to index type '{}'.
No index signature with a parameter of type 'number' was found on type '{}'. TS7053
128 | appVersion: data.version || "",
129 | offline: false,
130 | myArray: data.items.reduce( (map: object, obj: myInterface) : object => { map[obj.id] = obj; return map; }, [])
| ^
131 | });
答案 0 :(得分:0)
您的地图属于object类型。您必须提供一个对象作为reduce函数的初始值。
myArray: data.items.reduce(
(map: Record<myInterface['id'], myInterface>, obj: myInterface): Record<myInterface['id'], myInterface> =>
{ map[obj.id] = obj; return map; },
{})
答案 1 :(得分:0)
帕特里克·罗伯特(Patrick Robert)的答案已解决。谢谢!
myArray: data.items.reduce( (map: Record<myInterface['id'], myInterface>, obj: myInterface) : object => { map[obj.id] = obj; return map; }, {})