typescript - Metodă statică abstractă într-o clasă abstractă


Îmi amintesc că puteam să furnizez o interfață pentru o clasă abstractă, ceva de genul acesta, dar nu pot găsi acel cod online nicăieri. De ce nu pot să fac asta aici:

interface AbstractParent { 
  staticMember: () => boolean
}

abstract class AbstractParent {  
  static example() { 
    return this.staticMember()
  }
}

class Utilize extends AbstractParent {  
  static staticMember() { 
    return true
  }
}

console.log(Utilize.example())

Teren de joacă

Este posibil ca o clasă abstractă să impună o metodă statică?

Răspuns #1

De asemenea, poți încerca să înlocuiești this.staticMember() cu Utilize.staticMember(): Playground

Ideal, ai vrea să folosești static abstract staticMember. Dar, din păcate, nu este încă suportat și nu pare să existe o modalitate bună de a implementa acest lucru.

Verifică aceste discuții:

  • Sugestie: Adăugați metode statice abstracte în clase și metode statice în interfețe
  • metode și proprietăți static abstract
  • Permite specificarea clauzelor de implementare a interfeței pentru partea statică a claselor

Răspuns #2

Acest lucru funcționează fără eroare, dar nu garantează că Utilize implementează o metodă staticMember.

abstract class AbstractParent {  
  static staticMember: () => boolean
  static example() { 
    return this.staticMember()
  }
}

class Utilize extends AbstractParent {  
  static staticMember() { 
    return true
  }
}

console.log(Utilize.example())