I'm trying to create a (generic) binary tree in TypeScript.
I've created an interface which looks like:
interface Node<T> {
(left?: T): Node<T>,
(right?: T): Node<T>,
(data: T): T
}
However, when I do this I get an error message which tells me that "all declarations of 'Node' must have identical type parameters.
Is it possible to create such structures in TypeScript or would I need to do this some other way?
An implementation made without generics appears to work fine.
interface Node {
left: Node,
right: Node,
data: any
}
I think you're looking for this (I've used TreeNode
rather than Node
to avoid DOM conflicts):
interface TreeNode<T> {
left?: TreeNode<T>;
right?: TreeNode<T>;
data: T;
}
Here's an example using it (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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With