You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何遍历键值对数组?解决类型转换错误

正确遍历键值对数组的方法

你声明的produse是一个数组,数组中的每个元素是{[key: string]: ProductDTO}类型的键值对对象——也就是说,数组里存的不是直接的ProductDTO实例,而是以字符串为键、ProductDTO为值的对象。之前的错误是因为你把整个键值对对象当成了ProductDTO来强制转换,这显然不符合类型定义。

正确的遍历方式

方式一:遍历数组+遍历每个对象的值(适用于每个键值对对象有多个值的情况)

for (const prodObj of this.produse) {
  // 提取当前键值对对象中的所有ProductDTO值
  for (const produs of Object.values(prodObj)) {
    category.produse.push(produs.toSerialized());
  }
}

方式二:直接取每个对象的第一个值(适用于每个键值对对象只有一个键值对的情况)

如果数组里的每个键值对对象只包含一个ProductDTO实例,可以简化为:

for (const prodObj of this.produse) {
  const produs = Object.values(prodObj)[0];
  category.produse.push(produs.toSerialized());
}

为什么之前的尝试失败

  • 直接for (let produs of this.produse)拿到的produs是键值对对象,不是ProductDTO,强制转换会触发类型错误。
  • Object.values(this.produse)是提取数组的所有元素(依然是键值对对象),并没有深入到对象内部提取ProductDTO值,所以错误依旧。

内容的提问来源于stack exchange,提问作者Cristian Cutitei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:48:15