Now is the generic type of the node with neighbours always same. It does not cover situation of the different node and neighbourst type.
Idea:
export interface NodeWithNeighbours<T, N> extends HasNeighbours<N>, HasEdges {
node: T;
}
where T is type of node and N type of neighbours.