【发布时间】:2020-08-23 03:50:53
【问题描述】:
我想为树形结构定义一个接口。
每个节点可以有零个或多个子节点:
export interface TreeNode {
children?: Array<TreeNode>;
}
我已经为TreeNodes 实现了一个遍历函数。
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。
我不想将属性name 添加到接口TreeNode,因为树节点可以具有动态属性。如何修改TreeNode 接口以接受更通用的类型?
【问题讨论】:
标签: javascript typescript interface tree