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

TypeScript报错:'>'运算符无法用于Object[]与number类型比较

解决TypeScript类型错误:Operator '>' cannot be applied to types 'Object[]' and 'number'

问题原因

你的groupHistoricalData类型是HistoricalTsiDataType[],其中HistoricalTsiDataType是一个带索引签名的对象(每个键对应OeeDataType[]数组)。当前代码中,你直接对groupHistoricalData执行forEach,遍历出的values是整个HistoricalTsiDataType对象,而非你预期的OeeDataType[]数组。因此values.length是在访问对象的length属性,TypeScript无法识别该属性的合法类型,从而抛出错误。

解决方案

你需要先遍历groupHistoricalData中的每个对象,再提取对象内的OeeDataType[]数组进行操作:

方案1:遍历所有OeeDataType[]数组(适用于对象有多个键值对的情况)

useEffect(() => {
  groupHistoricalData.forEach(dataObj => {
    // 提取对象中所有OeeDataType[]数组并遍历
    Object.values(dataObj).forEach(values => {
      console.log(values.length > 0);
      // 遍历数组获取.oee属性
      values.forEach(item => {
        if (item.oee !== null) {
          console.log(item.oee);
        }
      });
    });
  });
}, [groupHistoricalData]);

方案2:直接获取单个OeeDataType[]数组(适用于对象仅含一个键值对的情况)

useEffect(() => {
  groupHistoricalData.forEach(dataObj => {
    const values = Object.values(dataObj)[0];
    if (values) {
      console.log(values.length > 0);
      values.forEach(item => {
        console.log(item.oee);
      });
    }
  });
}, [groupHistoricalData]);

额外说明

如果HistoricalTsiDataType的键是固定的字符串(而非动态键),可以修改类型定义让其更明确,避免后续类型混淆:

export interface HistoricalTsiDataType {
  // 替换为实际固定键名
  fixedKeyName: OeeDataType[];
}

内容的提问来源于stack exchange,提问作者Justin O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:40:25