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

TS报错Property does not exist on type 'Daily[]'解决方法

报错原因

props.weather.daily的TypeScript类型被定义为Daily[],即由Daily类型元素组成的数组。weather是单个Daily对象上的属性,不存在于数组类型本身,直接在数组上访问.weather就会触发该类型报错。
另外你当前编写的Daily接口本身存在隐性类型错误:temp和feels_like字段被错误定义为数组类型,实际这两个字段是单个对象,后续访问这两个字段的属性时也会触发类型报错。

修复方案
  • 先修正Daily接口的错误类型定义,移除temp、feels_like字段后多余的数组标记[],修正后的完整类型如下:
interface Daily {
  dt: number;
  sunrise: number;
  sunset: number;
  moonrise: number;
  moonset: number;
  moon_phase: number;
  temp: {day: number, eve: number, max: number, min: number, morn: number, night: number};
  feels_like: {day: number, night: number, eve: number, morn: number};
  pressure: number;
  humidity: number;
  dew_point: number;
  wind_speed: number;
  wind_deg: number;
  wind_gust: number;
  weather:  { id: number, main: string, description: string, icon:string }[];
  clouds: number;
  pop: number;
  uvi: number;
}

interface PropsType{
  weather:{
    lat: number;
    lon: number;
    timezone: string;
    timezone_offset: number;
    daily: Daily[];
  }
}
  • 访问weather属性时,先指定要读取daily数组中的对应元素,通过索引拿到单个Daily对象后再访问weather字段:
    • 读取指定日期(如第一天)的天气数据,可参考如下写法,可选链用于兜底避免接口返回空数组时触发运行时错误:
      // 直接读取,无兜底
      const firstDayWeather = props.weather.daily[0].weather[0]
      // 加可选链兜底
      const safeFirstDayWeather = props.weather.daily?.[0]?.weather?.[0]
      
    • 读取所有日期的天气数据,通过数组遍历方法访问每一项即可:
      props.weather.daily.forEach(dayItem => {
        // dayItem为单个Daily类型对象,可直接访问weather属性
        const currentDayWeather = dayItem.weather[0]
        console.log(currentDayWeather)
      })
      

内容的提问来源于stack exchange,提问作者H.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:09:42