我有一个函数,该函数接受一个对象并将其键转换为蛇形字符串并返回它。我正在使用reduce
来构造新对象,但似乎无法解决此错误:
元素隐式地具有“ any”类型,因为类型“ {}”没有索引签名。ts(7017)
哪一行出现在return { ...o, [snakeCase(k)]: evt[k] };
上,说明evt[k]
具有any
类型。我该如何解决?即使它的类型具有索引签名,索引签名也会因为它是一个空对象而被丢弃吗?
interface StringKeyMap<T> {
readonly [key: string]: T[keyof T];
}
function snakeCaseKeys<T extends object>(evt: T): StringKeyMap<T> {
const initial: StringKeyMap<T> = {};
return Object.keys(evt).reduce<StringKeyMap<T>>((o, k) => {
return { ...o, [snakeCase(k)]: evt[k] };
}, initial);
}