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
相关产品推荐
相关产品推荐

