我正在尝试在 TypeScript 中创建一个(通用)二叉树。
我创建了一个如下所示的界面:
interface Node<T> {
(left?: T): Node<T>,
(right?: T): Node<T>,
(data: T): T
}
但是,当我这样做时,我收到一条错误消息,告诉我“'Node' 的所有声明都必须具有相同的类型参数。
是否可以在 TypeScript 中创建这样的结构,或者我需要以其他方式这样做吗?
没有泛型的实现似乎工作正常。
interface Node {
left: Node,
right: Node,
data: any
}
最佳答案
我认为您正在寻找这个(我使用 TreeNode
而不是 Node
来避免 DOM 冲突):
interface TreeNode<T> {
left?: TreeNode<T>;
right?: TreeNode<T>;
data: T;
}
这是使用它的示例( on the playground ):
let tree: TreeNode<string> = {
data: "b",
left: {
data: "a"
},
right: {
data: "c"
}
};
console.log(tree.data); // "b"
console.log(tree.left?.data); // "a"
console.log(tree.right?.data); // "c"
关于typescript - 如何在 TypeScript 中创建递归二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61745541/