2015-12-29 2 views
6

Каковы способы решения проблемы только для того, чтобы разрешить продление не более одного другого класса.Многократное наследование классов в 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

Конечно, это не множественное наследование, TypeScript не поддерживает его (как C# и Java). Но то, что я предоставил, по просьбе OP, представляет собой пару альтернатив для имитации этой функциональности. – Brocco

+0

@Brocco Java 8 поддерживает множественное наследование реализации с помощью методов по умолчанию –

Смежные вопросы