我正试图编写一个函数,将TypeScript中对象的键从camelCase转换为snake_case。这是我的代码:
private convertToSnakeCase (obj: object): object{
const snakeCasedObject: object = {};
Object.keys(obj).map((key: string) => {
const snakeCaseKey: string = _.snakeCase(key);
snakeCasedObject[snakeCaseKey] = obj[key];
});
return snakeCasedObject;
}
TypeScript编译器会引发以下错误:
[ts]元素隐式地具有“ any”类型,因为类型“ {}”没有索引签名。
是否可以在不使用显式any
类型的情况下编写这样的函数?我想可以,因为对象键应该始终是字符串吗?
答案 0 :(得分:2)
这取决于您想要的具体程度。一种解决方案是做类似的事情
type AnyObj = {[key: string]: any};
private convertToSnakeCase(obj: AnyObj): AnyObj {
// ...
}
我假设您只是希望obj
是一个实际的对象,这就是为什么要避免使用any
的原因,而不是因为您想不惜一切代价避免使用any
。