我想为树结构定义一个接口。
每个节点可以有零个或多个子节点:
export interface TreeNode {
children?: Array<TreeNode>;
}
我已经为TreeNode实现了一个遍历函数。
export function traverseTree(treeData: Array<TreeNode> | TreeNode, callback: (treeNode: any) => any) {
// implementation omitted
}
我想测试它。代码如下:
const treeData = [
{
name: "root_1",
children: [
{
name: "child_1",
children: [
{
name: "grandchild_1"
},
{
name: "grandchild_2"
}
]
}
]
},
{
name: "root_2",
children: []
}
];
const traversingHistory = [];
const callback = (treeNode: any) => {
traversingHistory.push(treeNode.name);
}
traverseTree(treeData, callback);
然而,编译失败,因为
treeData
的类型参数不能应用于traverseTree
。我不想在接口
TreeNode
中添加属性name
,因为树节点可以具有动态属性。我该如何修改TreeNode
接口以接受更通用的类型?