В какой файл я должен поместить функцию переключения, которая возвращает новый подкласс - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть родительский класс

export class Component{

}

и много дочерних классов

export class ComponentOne extends Component{

}
export class ComponentTwo extends Component{

}

Я хочу создать функцию в компоненте, которая будет возвращать правильный тип класса на основе данных

parseComponentDatabase(databaseObject){
    switch(databaseObject.type){
        case "One": 
             return new ComponentOne(databaseObject)
        case "Two":
             return new ComponentTwo(databaseObject)
    }
}

Я хотел поместить эту функцию в Компонент, но это приводит к циклической зависимости, так как Компонент импортирует свои дочерние элементы, а дочерние уже импортируют ее. В моем проекте машинописного текста запрещены циклические зависимости.

Мой вопрос: в какой файл я должен поместить эту функцию?

1 Ответ

1 голос
/ 21 ноября 2019

Вам нужно использовать фабрику для создания экземпляра вашего объекта, а не ставить точки в классе компонентов, см. Документ шаблона фабрики.

...