Есть такая структура данных, от сервера:
Данные идут по порядку, type: 0 это группа далее по списку идут значения этой группы(type: 1)
Test = [
{id: 1, type: 0, name: 'Группа 1'},
{id: 2, type: 1, name: 'Элемент группы 1'},
{id: 3, type: 1, name: 'Элемент группы 1'},
{id: 4, type: 1, name: 'Элемент группы 1'},
{id: 5, type: 0, name: 'Группа 2'},
{id: 6, type: 1, name: 'Элемент группы 2'},
{id: 7, type: 1, name: 'Элемент группы 2'},
{id: 8, type: 0, name: 'Группа 3'},
{id: 9, type: 1, name: 'Элемент группы 3'},
];
Непосредственно в Angular пытаюсь сделать из этой структуры дерево:
Интерфейс:
export interface ITest {
id: number;
type: number;
name: string;
childrens?: ITest[];
}
И непосредственно функция которая формирует дерево:
genForm(data: ITest[]) {
const test: ITest[] = [];
let index = 0;
data.forEach((d, i) => {
if (d.type === 0) {
index = i;
test[index] = d;
test[index].childrens = [];
}
if (d.type === 1) {
test[index].childrens[i] = d;
}
}
});
console.log(test);
}
Собственно в целом выводит все как надо, но терминал сыпятся ошибка вида: error TS2532: Object is possibly 'undefined'.
Вопрос: как это победить или как-то по другому строить дерево?