MST
星途 面试题库

面试题:TypeScript调用签名在泛型与重载场景下的深度运用

设计一个TypeScript函数`processData`,使用泛型和调用签名重载来实现以下功能:当传入一个字符串数组时,返回数组元素连接成的字符串;当传入一个数字数组时,返回数组元素的平均值;当传入一个包含对象的数组,对象具有`name`属性(字符串类型),返回对象`name`连接成的字符串。请给出完整的函数定义以及调用示例。
33.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function processData<T>(arr: string[]): string;
function processData<T>(arr: number[]): number;
function processData<T extends { name: string }>(arr: T[]): string;
function processData<T>(arr: any[]): any {
    if (arr.length === 0) {
        return null;
    }
    if (typeof arr[0] ==='string') {
        return arr.join('');
    } else if (typeof arr[0] === 'number') {
        return arr.reduce((acc, val) => acc + val, 0) / arr.length;
    } else if ('name' in arr[0]) {
        return arr.map((obj) => obj.name).join('');
    }
    return null;
}

// 调用示例
const stringArr: string[] = ['a', 'b', 'c'];
const stringResult = processData(stringArr);
console.log(stringResult); 

const numberArr: number[] = [1, 2, 3];
const numberResult = processData(numberArr);
console.log(numberResult); 

const objectArr = [{ name: 'Alice' }, { name: 'Bob' }];
const objectResult = processData(objectArr);
console.log(objectResult);