interface TreeNode<T> {
value: T
children: TreeNode<T>[]
}
const root: TreeNode<number> = { value: 1, children: [] }A recursive interface refers to itself, enabling tree and nested data structures.
An interface can reference itself, enabling recursive data structures.
Challenge: Implement createTreeNode<T>(value, children?) returning a TreeNode<T>.
createTreeNode(1) // β { value: 1, children: [] }
createTreeNode(1, [createTreeNode(2)]) // β { value: 1, children: [{ value: 2, children: [] }] }