“从不”类型上不存在属性“地图”

Posted

技术标签:

【中文标题】“从不”类型上不存在属性“地图”【英文标题】: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,
  
    
  );

【问题讨论】:

这可能会有所帮助:***.com/questions/12787781/… 请提供minimal reproducible example,清楚地表明您面临的问题。理想情况下,有人可以将代码放入像The TypeScript Playground (link here!) 这样的独立IDE 中,然后立即着手解决问题,而无需首先重新创建它。所以应该没有错别字、不相关的错误或未声明的类型或值。 您是否尝试让知道返回类型?类似于 interface User id: number;名称:字符串; axios.get(...) 【参考方案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 文档中的最新变化。非常感谢!!

以上是关于“从不”类型上不存在属性“地图”的主要内容,如果未能解决你的问题,请参考以下文章

类型“MapView”上不存在属性“地图”

类型“主题<>”上不存在属性“地图”

“对象”类型上不存在 Angular 6 属性“地图”

Subject<MessageEvent> 类型上不存在专有“地图”

类型“typeof ...”上不存在属性“use”,类型“typeof”上不存在属性“extend”

如何解决“从不”类型中不存在属性