MST

星途 面试题库

面试题:TypeScript接口在泛型和复杂数据结构结合场景下的设计

设计一个通用的TypeScript接口`NestedData<T>`,它可以表示一个嵌套的数据结构。这个数据结构可以是一个普通对象,对象的属性值可以是`T`类型,也可以是`NestedData<T>`类型的对象,或者是`NestedData<T>`类型对象的数组。然后编写一个函数`flattenNestedData`,它接收`NestedData<T>`类型的数据,将其扁平化(即把嵌套的对象和数组展开),返回一个只包含`T`类型值的数组。
46.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface NestedData<T> {
    [key: string]: T | NestedData<T> | NestedData<T>[];
}

function flattenNestedData<T>(data: NestedData<T>): T[] {
    const result: T[] = [];
    function traverse(obj: NestedData<T> | NestedData<T>[]) {
        if (Array.isArray(obj)) {
            for (const item of obj) {
                traverse(item);
            }
        } else {
            for (const value of Object.values(obj)) {
                if (typeof value === 'object' && value!== null) {
                    traverse(value);
                } else if (typeof value!== 'undefined') {
                    result.push(value);
                }
            }
        }
    }
    traverse(data);
    return result;
}