Angular中forEach遍历数组时提示.currency未定义求助
解决forEach遍历中
.currency未定义的问题 看起来你的代码里存在两个关键问题,导致了.currency未定义的提示,咱们一步步来修复:
1. 修正forEach的赋值错误
首先,forEach方法的返回值是undefined,你不能把它赋值给array变量——这不仅会让array变成undefined,还可能干扰TypeScript的类型推断。
如果你的目标是筛选出currency为'QTW'的元素,应该用filter方法(它会返回符合条件的新数组),再结合forEach处理:
// 先筛选符合条件的元素 const filteredPrices: MoneyDTO[] = prices.filter((money: MoneyDTO) => money.currency === 'QTW'); // 再遍历处理 filteredPrices.forEach(money => { // 这里写你的处理逻辑 });
如果只是遍历原数组处理符合条件的元素,直接调用forEach即可,不需要赋值:
prices.forEach((money: MoneyDTO) => { if (money.currency === 'QTW') { // Do stuff } });
2. 解决.currency未定义的类型提示
出现这个提示,大概率是TypeScript无法确定money的类型,或者数组里存在空值,你可以从这几个方向排查:
确保
prices的类型是MoneyDTO[]
如果prices是any类型,TypeScript无法推断元素的结构,会认为.currency可能不存在。显式指定prices的类型:// 定义你的MoneyDTO接口 interface MoneyDTO { currency: string; // 其他必要属性... } // 给prices指定类型 const prices: MoneyDTO[] = [/* 你的数组内容 */];处理数组中的空值
如果prices里可能存在null或undefined,需要先做空值检查,避免访问不存在的属性:prices.forEach((money) => { // 先判断money是否有效 if (money && money.currency === 'QTW') { // Do stuff } });确认
MoneyDTO的定义
检查你的MoneyDTO接口/类是否确实包含currency属性,比如:// 正确的定义示例 interface MoneyDTO { currency: string; amount: number; }
内容的提问来源于stack exchange,提问作者StuartDTO
相关产品推荐
相关产品推荐

