gpt4 book ai didi

javascript - 树结构的 Typescript 接口(interface)

转载 作者:行者123 更新时间:2023-12-02 20:48:55 30 4
gpt4 key购买 nike

我想为树结构定义一个接口(interface)。

每个节点可以有零个或多个子节点:

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

我不想向接口(interface)TreeNode 添加属性name,因为树节点可以具有动态属性。如何修改 TreeNode 接口(interface)以接受更通用的类型?

最佳答案

您可能遇到的错误是:

Object literal may only specify known properties, and 'name' does not exist in type

如果您想允许其他键,它必须是类型的一部分。您可以使用索引签名来做到这一点:

export interface TreeNode {
[key: string]: any // type for unknown keys.
children?: TreeNode[] // type for a known property.
}

关于javascript - 树结构的 Typescript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61664754/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com