繁体   English   中英

TypeScript - 计算属性名称的类型必须为“字符串”、“数字”、“符号”或“任意”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM