ค้นหาเว็บไซต์

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,
  
    }
  });

บทความที่เกี่ยวข้อง