MST

星途 面试题库

面试题:TypeScript递归类型构建复杂树形结构及操作

假设我们要构建一个更复杂的树形数据结构用于文件系统模拟。树节点包含type(类型,'file' 或 'folder')、name(名称,字符串类型)、size(如果是文件,代表文件大小,数字类型;如果是文件夹,为0)以及children(子节点数组,类型为当前树节点类型)。使用TypeScript递归类型定义该结构,并编写一个函数,接收树的根节点,返回整个文件系统的总大小(即所有文件大小之和)。
22.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 递归类型定义树形数据结构
type FileSystemNode = {
    type: 'file' | 'folder';
    name: string;
    size: number;
    children?: FileSystemNode[];
};

// 计算整个文件系统总大小的函数
function calculateTotalSize(root: FileSystemNode): number {
    if (root.type === 'file') {
        return root.size;
    } else {
        return (root.children || []).reduce((total, child) => total + calculateTotalSize(child), 0);
    }
}