2015-12-29 16 views
6

Quali sono i modi per aggirare il problema della possibilità di estendere al massimo una sola classe.Ereditarietà di classi multiple in TypeScript

class Bar { 

    doBarThings() { 
    //... 
    } 

} 

class Bazz { 

    doBazzThings() { 
    //... 
    } 

} 

class Foo extends Bar, Bazz { 

    doBarThings() { 
    super.doBarThings(); 
    //... 
    } 

} 

Al momento non è possibile, TypeScript genera un errore. Uno può superare questo problema in altre lingue usando le interfacce ma risolvere il problema con quelle non è possibile in TypeScript.

I suggerimenti sono benvenuti!

risposta

2

Questo è possibile con le interfacce:

interface IBar { 
    doBarThings(); 
} 

interface IBazz { 
    doBazzThings(); 
} 

class Foo implements IBar, IBazz { 
    doBarThings() {} 
    doBazzThings(){} 
} 

Ma se si vuole implementazione per questo in un modo super/base, allora si dovrà fare qualcosa di diverso, come questo:

class FooBase implements IBar, IBazz{ 
    doBarThings() {} 
    doBazzThings(){} 
} 

class Foo extends FooBase { 
    doFooThings(){ 
     super.doBarThings(); 
     super.doBazzThings(); 
    } 
} 
+10

Ma questa non è un'eredità multipla, questa è una singola implementazione di più interfacce, che non è la stessa cosa. L'ereditarietà multipla include l'ereditarietà dell'implementazione. –

+1

Ovviamente non è un'ereditarietà multipla, TypeScript non lo supporta (proprio come C# e Java). Ma quello che ho fornito, come richiesto dall'OP, sono un paio di alternative per imitare quella funzionalità. – Brocco

+0

@Brocco Java 8 supporta l'ereditarietà multipla dell'implementazione tramite i metodi predefiniti –

Problemi correlati