[英]Typescript error: A computed property name must be of type 'string', 'number', 'symbol', or 'any'
[英]TypeScript - A computed property name must be of type 'string', 'number', 'symbol', or 'any'
我正在尝试在我的打字稿代码中使用计算机属性名称功能
import {camelCase} from "lodash";
const camelizeKeys = (obj:any):any => {
if (Array.isArray(obj)) {
return obj.map(v => camelizeKeys(v));
} else if (obj !== null && obj.constructor === Object) {
return Object.keys(obj).reduce(
(result, key) => ({
...result,
[camelCase(key)]: camelizeKeys(obj[key]), // error on [camelCase(key)]
}),
{},
);
}
return obj;
};
它给出了一个编译时错误:
计算属性名称的类型必须为“字符串”、“数字”、“符号”或“任何”.ts
我试图通过关注这个 SO thread来解决这个错误,但没有成功。
你有 lodash 类型吗?
npm install @types/lodash
如果是这样并且它们仍然不起作用,您可能只需要断言camelCase(key)
的类型:
[camelCase(key):string]: camelizeKeys(obj[key]),
根据@Klaycon 的回答。 我安装了类型,它给了我camelCase() 返回类型的提示。 然后我设法解决了这个问题
[String(camelCase(key))]: camelizeKeys(obj[key]),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.