// Utilisation des génériques pour une fonction

function maxVal<T>(args:T[], comparer : (a:T,b:T) => number ) : T {
    return args.reduce(
        (accumulateur:T,valeur:T)=>
            comparer(accumulateur,valeur) > 0 ? accumulateur : valeur );

}

const monTableau = [1,2,3,4,5,6];

console.log( maxVal(monTableau, (a,b)=> a - b ) );

const monTableau2 = ["aaaaa", "zzzz"];

console.log( maxVal( monTableau2, (a,b)=>a.localeCompare(b) ) );
