interface BaseData { id: K; parentId?: K; [key: string]: any; } declare class Node = BaseData> { readonly id: K; readonly parentId: K | undefined; readonly origin: T; parent: Node | null; readonly children: Array>; constructor(data: T); addChildren(node: Node): void; } /** * 数结构节点遍历 * @example * ```typescript * const tree = new NodeTree([ * { id: 1 }, * { id: 2, parentId: 1 }, * ]); * const result = tree.travel( * 'up', * tree.get(2)!, * (node, result = 0) => { * console.log(node); * return result + node.id; * }); * console.log(result); * // 3 * ``` */ export declare class NodeTree = BaseData> { private readonly cache; constructor(list?: T[]); private sort; get(id: K): Node | undefined; apply(list: T[]): void; /** * 遍历节点方法 * @param type - 向父节点 or 向子节点 * @param node - 开始节点 * @param handle - 遍历处理函数, 每个节点都会调用 * @param data - 遍历处理函数的返回值 * @returns */ travel(type: 'up' | 'down', node: Node, handle: (node: Node, result?: R) => R, data?: R): R; } export {};