Médio TypeScript

Soma com número variável de argumentos

Enunciado

Crie uma função somar que aceita qualquer quantidade de números e retorna a soma deles. Use rest parameters e tipagem adequada.

Requisitos

  • A função deve usar ...numeros: number[].
  • Deve retornar um number.
  • Se nenhum número for passado, deve retornar 0.

Código inicial

function somar(...numeros: number[]): number {
  // Seu código aqui
}

Saída esperada

10
0
6
Ver dica

Use reduce para acumular a soma, começando com 0.

Mostrar solução
function somar(...numeros: number[]): number {
  return numeros.reduce((acc, n) => acc + n, 0);
}

console.log(somar(1, 2, 3, 4));
console.log(somar());
console.log(somar(1, 2, 3));

Passo a passo

  1. Declaramos somar com rest parameter ...numeros: number[], que agrupa todos os argumentos em um array de números.
  2. O tipo de retorno é number.
  3. Usamos reduce para somar todos os elementos, iniciando com 0.
  4. Chamamos a função com diferentes quantidades de argumentos, incluindo nenhum.
  5. Exibimos os resultados.

Por que funciona

O rest parameter permite que a função receba zero ou mais argumentos. O array resultante é tipado como number[], então o reduce opera com segurança. O valor inicial 0 garante que a soma de nenhum número seja 0.

Erros comuns

  • Esquecer o valor inicial do reduce: numeros.reduce((acc, n) => acc + n) – se o array estiver vazio, lança erro.
  • Tipar o rest como ...numeros: number (sem colchetes) – erro de sintaxe.
  • Tentar passar strings: somar("1", "2") – erro de tipo.

Outra forma de resolver

Usar um loop for...of:

function somar(...numeros: number[]): number {
  let total = 0;
  for (const n of numeros) total += n;
  return total;
}

Saída esperada

10
0
6