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

คลาส - การเริ่มต้นคุณสมบัติทั่วไปที่ขยายแล้วใน TypeScript


ฉันกำลังพยายามสร้างคลาสที่มีพารามิเตอร์แบบเจเนอริกซึ่งขยายชนิด boolean ฉันได้ลองทำให้พารามิเตอร์แบบเจเนอริกนี้สามารถเข้าถึงได้ในเวลารันไทม์โดยการกำหนดให้กับคุณสมบัติแบบนี้:

class Example<T extends boolean> {
    foo: T = true;
}

การประกาศคลาสฐานทำงานได้ แต่บรรทัดที่เริ่มต้น foo ให้ข้อผิดพลาด:

Type 'boolean' is not assignable to type 'T'.
  'boolean' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'boolean'.

สิ่งนี้ไม่ค่อยเข้าใจสำหรับฉัน T อาจเป็นชนิดอื่นที่ขยายออกไปแต่ไม่อยู่ภายใต้ true | false ได้อย่างไร? ทำไมความเป็นไปได้ที่มันอาจเป็นชนิดอื่นถึงทำให้ไม่สามารถกำหนดค่าเริ่มต้นเป็น boolean ได้?