MST

星途 面试题库

面试题:TypeScript复杂数组和对象类型推断的高级应用

有一个复杂的数据结构,它是一个数组,数组中的每个元素又是一个对象,对象的属性名是动态的,属性值可能是字符串、数字、布尔值或者另一个符合上述规则的对象。请编写一个TypeScript类型定义来准确描述这个数据结构,并编写一个函数,该函数接收这个数组,遍历数组中每个对象,统计所有数字类型属性值的总和。示例数据如下: ```typescript const complexData: any[] = [ { a: 1, b: 'test', sub: { c: 2 } }, { d: true, e: 3 } ]; // 请在此处编写类型定义和统计函数 ```
37.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 类型定义
type DynamicObject = {
    [key: string]: string | number | boolean | DynamicObject;
};
type ComplexData = DynamicObject[];

// 统计函数
function sumNumbersInComplexData(data: ComplexData): number {
    let sum = 0;
    data.forEach((obj) => {
        for (const key in obj) {
            if (typeof obj[key] === 'number') {
                sum += obj[key];
            } else if (typeof obj[key] === 'object' && obj[key]!== null) {
                sum += sumNumbersInComplexData([obj[key] as DynamicObject]);
            }
        }
    });
    return sum;
}

const complexData: ComplexData = [
    { a: 1, b: 'test', sub: { c: 2 } },
    { d: true, e: 3 }
];
console.log(sumNumbersInComplexData(complexData));