interface Person {
name: string;
age: number;
}
function processData(arr: number[]): number;
function processData(arr: string[]): number;
function processData(arr: Person[]): string;
function processData<T>(arr: T[]): number | string {
if (Array.isArray(arr) && arr.length > 0) {
if (typeof arr[0] === 'number') {
return arr.reduce((sum, num) => sum + num, 0);
} else if (typeof arr[0] ==='string') {
return arr.reduce((maxLength, str) => Math.max(maxLength, str.length), 0);
} else if ('name' in arr[0] && 'age' in arr[0]) {
return (arr as Person[]).reduce((oldest, person) => person.age > oldest.age? person : oldest).name;
}
}
return 0;
}