const y = (...args: number[]) => args.reduce(x, 0);
reduce() -> Executa uma função redutora para cada elemento de um array. O primeiro argumento é a função, e o segundo é o valor inicial
"..." -> Operador Spread. No caso da questão, "function(...args)" significa que posso passar N valores avulsos e eles serão "convertidos" em um único array.
Transformando o código em Javascript e sem o Arrow Function ("=>"):
const y = function(...args) {
return args.reduce(x, 0);
}
O meu x precisa ser uma função. Elimino A e B.
De acordo com a documentação, o reduce pode passar para a função x os valores de "previousValue" e "currentValue" do meu array args, que são do tipo "number". Logo, não posso ter uma função que recebe parâmetro diferente de number ou que retorne valor diferente de number. Elimino C e D
GAB E
Se eu chamar y(1,2,3), vai retornar 6. // 1 + 2 + 3