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

typescript - ไม่มีข้อผิดพลาดถ้าหากไม่มีอาร์กิวเมนต์ของคอนสตรัคเตอร์


นั่นคอมไพล์โดยไม่มีข้อผิดพลาด:

interface A {}

interface AConstructor {
  new(id: string): A
}


const AC: AConstructor = class implements A {
  // note the missing parameter »id«
  constructor(){}
}

แต่เปลี่ยนเป็น:

const AC: AConstructor = class implements A {
  // note that this is now of type number
  constructor(id: number){}
}

สร้างข้อผิดพลาด โดยรวมแล้วจะไม่มีข้อผิดพลาดหากพารามิเตอร์ของคอนสตรัคเตอร์หายไป มีเฉพาะกรณีที่พารามิเตอร์มีประเภทไม่ถูกต้องเท่านั้น ทำไมถึงเป็นเช่นนั้น? มีธงใดบ้างที่จะทำให้ TS สร้างข้อผิดพลาดในการคอมไพล์หากอาร์กิวเมนต์เหล่านั้นหายไป?

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