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

Next.js的getServerSideProps中axios请求后data调用map报type never错误如何解决

这个报错的核心原因是TypeScript无法自动推断axios请求返回的data字段类型,默认将其判定为never类型,而never类型不存在map方法,因此触发了类型校验错误。实际运行正常是因为运行阶段不会执行TypeScript类型校验。

解决方案

方案1:指定泛型(推荐)

先定义返回数据的类型,再给axios的get方法传入对应泛型,是最符合TypeScript规范的写法:

// 先定义用户数据类型,可根据实际接口返回字段调整
interface User {
  id: number;
  name: string;
  created_at: string;
}

export const getServerSideProps: GetServerSideProps = async () => {
  // 给get方法传入<User[]>泛型,声明返回的data是User类型的数组
  const { data } = await api.get<User[]>("/users/index", { 
    params: {
      _limit: 12,
      _sort: "created_at", 
      _order: "desc"
    }
  })

  const users = data.map(user => { 
    return {
      id: user.id,
      name: user.name,
      created_at: user.created_at,
    }
  });
  // 后续逻辑
}

方案2:类型断言(快速修复)

如果不需要完整类型校验,只想临时消除报错,可以给data添加类型断言:

// 断言为任意数组
const users = (data as any[]).map(user => {
  return {
    id: user.id,
    name: user.name,
    created_at: user.created_at,
  }
});

// 也可以直接写更精准的断言
const users = (data as {id:number; name:string; created_at:string}[]).map(user => {
  return {
    id: user.id,
    name: user.name,
    created_at: user.created_at,
  }
});

注意:如果你使用的是二次封装的axios实例,需要确认封装逻辑没有破坏axios原生的泛型传递能力,正常封装的实例都可以直接使用上述泛型写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:39:01