MST

星途 面试题库

面试题:TypeScript复杂场景下any类型的范围缩小

假设你有一个函数`handleData`,它接收一个`any`类型的数组`dataArray`。这个数组中的元素可能是以下三种类型之一:1. 数字类型;2. 包含`type`属性值为'object',且有`subProp`属性为字符串类型的对象;3. 包含`type`属性值为'array',且有`subArray`属性为数字类型数组的对象。请编写TypeScript代码,遍历`dataArray`,如果元素是数字,返回其平方;如果是上述第二种对象,返回`subProp`的长度;如果是上述第三种对象,返回`subArray`所有元素之和。如果元素不符合以上任何一种类型,跳过该元素。最后返回一个处理结果的数组。
41.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function handleData(dataArray: any[]): number[] {
    const result: number[] = [];
    for (const item of dataArray) {
        if (typeof item === 'number') {
            result.push(item * item);
        } else if (typeof item === 'object' && 'type' in item && item.type === 'object' &&'subProp' in item && typeof item.subProp ==='string') {
            result.push(item.subProp.length);
        } else if (typeof item === 'object' && 'type' in item && item.type === 'array' &&'subArray' in item && Array.isArray(item.subArray) && item.subArray.every((element) => typeof element === 'number')) {
            result.push(item.subArray.reduce((acc, val) => acc + val, 0));
        }
    }
    return result;
}