typescript - ไม่พบคุณสมบัติ 'map' ในประเภท 'never'
เมื่อทำการร้องขอ get ด้วย axios ภายในฟังก์ชัน getServerSideProps ของ next.js ฉันมักจะเจอข้อผิดพลาด typescript ที่มีเส้นใต้บนเมธอด 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,
}
});
คำตอบ #1
ผมคิดว่าใน axios เวอร์ชัน 0.22 หรือ 0.23 พวกเขาได้เปลี่ยนลายเซ็นของ Typescript ดังนั้นตอนนี้คุณต้องคาสต์ data ดูบันทึกการเปลี่ยนแปลงเพื่อข้อมูลเพิ่มเติม ในการแก้ไขปัญหานี้คุณสามารถส่ง generic ได้:
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,
}
});
