繁体   English   中英

类型 'string[]' 不能用作索引 type.ts(2538)

[英]Type 'string[]' cannot be used as an index type.ts(2538)

TS错误:

类型 '(string | undefined)[]' 不能用作索引 type.ts(2538)

代码:

Object.values(payload.reduce((acc, obj) => {
  let key = obj.values.map(i => i.object_id);
  if (!acc[key]) {
    acc[key] = []
  }  
  acc[key].push(obj)
  return acc
}, {}))

在 javascript 代码中工作正常。 为什么?

看起来您正在尝试通过使用数组键作为这一行来访问数组值:

let key = obj.values.map(i => i.object_id);

返回一个字符串数组并将其分配给键变量。

编辑我的意思是你不能使用数组作为索引。 尝试将字符串值分配给键而不是映射结果。

像这样的东西:

Object.values(list.reduce((acc,obj) => {
  let keys = obj["values"].map(i => String(i.object_id));
  console.log(`Result mapping key`);
  console.log(keys);

  for (const subkey in keys) {
    if (!acc[subkey]) {
      acc[subkey] = []
    }
    acc[subkey].push(obj);
  }
  return acc
}, {}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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