It would be better to make observer and subject from observer.utils.ts to use generics instead of hard-coded types in their payload.
The current implementation provides an existing type IObserverDataPayload which is the mix of existing node data types that are then used by observers and subjects.
A possible better implementation would be to provide custom payload data types for nodes and edges and use them to create a shared payload that could be used to parametrize observers while retrieving data. It is still not perfect and requires a lot of type guards to be used but it is already much more future-proof.
It would be better to make observer and subject from
observer.utils.tsto use generics instead of hard-coded types in their payload.The current implementation provides an existing type
IObserverDataPayloadwhich is the mix of existing node data types that are then used by observers and subjects.A possible better implementation would be to provide custom payload data types for nodes and edges and use them to create a shared payload that could be used to parametrize observers while retrieving data. It is still not perfect and requires a lot of type guards to be used but it is already much more future-proof.