【发布时间】:2020-09-23 14:25:49
【问题描述】:
我正在尝试将我的打字稿代码中的计算机属性名称功能用作
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;
};
编译时错误如下:
计算属性名称的类型必须为“string”、“number”、“symbol”或“any”.ts
我尝试通过关注this SO thread 来解决此错误,但没有成功。
【问题讨论】:
-
你是如何实现
camelCase()的? -
可能
camelCase不返回string或number? -
@Thomas,我更新了问题,camelCase 是一个 lodash 函数
-
您可能需要为
camelCase添加类型提示,以便 TS 知道它返回一个字符串?
标签: javascript typescript