Есть ли способ динамически расширяться из одного из набора базовых классов? - PullRequest
0 голосов
/ 12 марта 2019

Я пишу на машинописном тексте и имею следующую диаграмму классов.

Class diagramm Классы FooDea , BarDea и SubDea имеют одинаковое тело (конструктор, функциональность исвойства), но различаются из-за своих родителей и типа интерфейса.Какова рекомендуемая стратегия, чтобы предотвратить дублирование кода, но при этом получить читаемый код?Когда IFooDaa, IBarDaa и ISubDaa все реализуют IBase и IDea, возможно ли сделать что-то вроде:

type Dea<T extends IBase> =
    T extends IFoo ? FooDea<T> :
        T extends IBar ? BarDea<T> :
            T extends ISub ? SubDea<T>: never;

export class FooDea extends BaseDea<IFooDea> { }
export class BarDea extends BaseDea<IBarDea> { }
export class SubDea extends BaseDea<ISubDea> { } 
export abstract class BaseDea<T extends Idea> extends Dea<T> {
    // fields and properties
    // constructor, with super statement
    // functions and methods
}

Как бы я это сделал?Должен ли я даже сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...