MST

星途 面试题库

面试题:TypeScript类型守卫在泛型与联合类型混合场景中的运用

编写一个泛型函数`handleUnion<T extends string | number>(arg: T[])`,该函数接收一个由字符串或数字组成的数组。使用类型守卫实现以下功能:如果数组元素是字符串,统计所有字符串中包含字母`a`的个数;如果是数字,统计所有数字的总和。最后返回一个对象,包含`count`(字符串中`a`的个数或数字总和)和`type`(表明处理的是字符串还是数字)。
20.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function handleUnion<T extends string | number>(arg: T[]): { count: number; type: string } {
    if (typeof arg[0] ==='string') {
        let count = 0;
        arg.forEach(str => {
            for (let char of str) {
                if (char === 'a') {
                    count++;
                }
            }
        });
        return { count, type:'string' };
    } else {
        return { count: arg.reduce((acc, num) => acc + num, 0), type: 'number' };
    }
}