MST

星途 面试题库

面试题:TypeScript 泛型在复杂数据结构中的应用

假设有一个深度嵌套的树形结构数据,每个节点可以包含不同类型的子节点,设计一个使用 TypeScript 泛型的方案来定义该树形结构的数据类型,并编写一个函数用于遍历该树,要求返回所有节点的值组成的数组,阐述设计思路并给出代码示例。
34.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 使用 TypeScript 泛型来定义树形结构数据类型,这样可以灵活支持不同类型的节点。
  2. 定义一个泛型接口来表示树节点,包含节点值和子节点数组。
  3. 编写递归函数来遍历树形结构,收集所有节点的值并返回。

代码示例

// 定义树形结构数据类型
interface TreeNode<T> {
    value: T;
    children: TreeNode<T>[];
}

// 遍历树的函数
function traverseTree<T>(root: TreeNode<T>): T[] {
    const result: T[] = [];
    function recursiveTraverse(node: TreeNode<T>) {
        result.push(node.value);
        node.children.forEach(child => recursiveTraverse(child));
    }
    recursiveTraverse(root);
    return result;
}

// 示例使用
const tree: TreeNode<number> = {
    value: 1,
    children: [
        {
            value: 2,
            children: [
                { value: 4, children: [] },
                { value: 5, children: [] }
            ]
        },
        {
            value: 3,
            children: [
                { value: 6, children: [] },
                { value: 7, children: [] }
            ]
        }
    ]
};

const values = traverseTree(tree);
console.log(values); // 输出: [1, 2, 4, 5, 3, 6, 7]