“从不”类型上不存在属性“地图”
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我认为在 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 文档中的最新变化。非常感谢!!以上是关于“从不”类型上不存在属性“地图”的主要内容,如果未能解决你的问题,请参考以下文章
Subject<MessageEvent> 类型上不存在专有“地图”