2015-12-29 6 views
6

他のクラスを最大で1つだけ拡張できるという問題を回避する方法はありますか?TypeScriptでの複数クラス継承

class Bar { 

    doBarThings() { 
    //... 
    } 

} 

class Bazz { 

    doBazzThings() { 
    //... 
    } 

} 

class Foo extends Bar, Bazz { 

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

} 

これは現時点では不可能ですが、TypeScriptはエラーとなります。インターフェイスを使用することによってこの問題を他の言語で克服できますが、TypeScriptではこれらの問題を解決することは不可能です。

提案は大歓迎です!

答えて

2

これは、インターフェイスを持つことも可能である:

interface IBar { 
    doBarThings(); 
} 

interface IBazz { 
    doBazzThings(); 
} 

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

しかし、あなたはこのsuper/baseでの方法を実装したい場合は、あなたが別の何かをする必要があります、このような:

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

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

しかし、これは多重継承ではなく、これは複数のインタフェースの1つの実装ですが、これは同じことではありません。多重継承には、実装の継承が含まれます。 –

+1

もちろん、それは多重継承ではなく、TypeScriptはそれをサポートしていません(C#とJavaのように)。しかし、私が提供したのは、OPによって要求されたように、その機能を模倣するためのいくつかの選択肢です。 – Brocco

+0

@Brocco Java 8は、デフォルトメソッドを使用した実装の複数の継承をサポートしています –