export interface TreeNode { id: string | number name: string state: TreeNodeState level: number expandable: boolean expandableClosed: boolean parent: string | number | null hidden?: boolean child: (string | number)[] } export interface TreeNestedNode { id: string | number name: string state: TreeNodeState level: number expandable: boolean expandableClosed: boolean text: string hidden: boolean // parent: TreeNestedNode | null; child: TreeNestedNode[] } export type TreeData = { // [key: string]: null | string[] | TreeData; id: number | string name: string children?: TreeData[] } export type TreeNodeState = 'checked' | 'unchecked' | 'indeterminate' export type TreeNodeStateEditable = 'checked' | 'unchecked'