【问题标题】:Property 'map' does not exist on type 'never'“从不”类型上不存在属性“地图”
【发布时间】:2021-12-03 04:11:20
【问题描述】:

当在 axios get 内部发出请求时 next.js getServerSideProps 函数,我在 map 方法上不断收到这个烦人的打字稿下划线错误。我已经经历了所有修复的可能性,但无法解决它。该请求实际上工作正常并提取数据,但我只需要摆脱错误。有什么建议吗?

 export const getServerSideProps: GetServerSideProps = async () => {

  const { data } = await api.get("/users/index", { //axios api
    params: {
      _limit: 12
      _sort: "created_at", 
      _order: "desc"
    }
  })

  
  const users = data.map(user => { // <-error line under map method
    return {
      id: user.id,
      name: user.name,
      created_at: user.created_at,
  
    }
  });

【问题讨论】:

标签: typescript next.js


【解决方案1】:

我认为在 axios 的 0.22 或 0.23 中,他们更改了 Typescript 签名,所以现在您必须强制转换 data,请参阅 changelog 了解更多信息。要解决此问题,您可以传递一个泛型:

type User = {
   id: string
   name: string
   created_at: string
}

const { data } = await api.get<User[]>("/users/index", { //axios api
    params: {
      _limit: 12
      _sort: "created_at", 
      _order: "desc"
    }
})

否则,您可以就地进行类型转换:

const users = (data as User[]).map(user => { // <-error line under map method
    return {
      id: user.id,
      name: user.name,
      created_at: user.created_at,
  
    }
  });

【讨论】:

  • 已解决!!!你们是最棒的。这实际上是我第一次遇到这个问题,我认为这是 axios/typescript 文档中的最新变化。非常感谢!!
猜你喜欢
  • 2017-01-11
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2022-01-26
  • 1970-01-01
  • 2017-10-24
  • 2021-12-30
相关资源
最近更新 更多