1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
NodeMeta: { id: string, } TreeLinkFields: { parent?: TreeNode, } TreeNode: { ...NodeMeta, ...TreeLinkFields, payload: TreePayload, children: [TreeNode], } TreePayload: { ...NodeMeta, owner?: TreeNode, kind: string, }