Desafio TypeScript
Array readonly com validação
Enunciado
Crie uma função somarTodos que recebe um readonly number[] e retorna a soma de todos os elementos. Em seguida, crie um array readonly com os números 1, 2, 3, 4, 5 e use a função para calcular a soma. Imprima o resultado.
Requisitos
- A função deve aceitar
readonly number[]. - O array deve ser declarado como
readonly. - A soma deve ser calculada corretamente.
- A saída deve ser o número
15.
Código inicial
// Implemente a função somarTodos e use-a
Saída esperada
15
Ver dica
Use reduce ou um loop for...of para somar.
Mostrar solução
// Função que aceita array readonly e soma os elementos
function somarTodos(numeros: readonly number[]): number {
let soma = 0;
for (const num of numeros) {
soma += num;
}
return soma;
}
// Array readonly
const valores: readonly number[] = [1, 2, 3, 4, 5];
// valores.push(6); // Erro de compilação
const resultado = somarTodos(valores);
console.log(resultado); // 15
Passo a passo
- Definimos a função
somarTodosque recebe um parâmetronumerosdo tiporeadonly number[]. - Dentro da função, inicializamos
somacom0. - Usamos um loop
for...ofpara percorrer cada número e adicioná-lo à soma. - Retornamos a soma.
- Criamos um array
valorescomreadonly number[]e os números de 1 a 5. - Chamamos
somarTodos(valores)e armazenamos emresultado. - Imprimimos
resultado, que será15.
Por que funciona
O tipo readonly number[] impede que a função modifique o array, garantindo segurança. O loop soma todos os elementos corretamente.
Erros comuns
- Tentar modificar o array dentro da função:
numeros.push(6)— erro de compilação. - Esquecer o
readonlyna declaração:const valores: number[] = [1,2,3,4,5];— ainda funciona, mas não protege contra mutações. - Usar
reducesem tipar o acumulador:numeros.reduce((a, b) => a + b)— pode inferirnumber, mas é menos explícito.
Outra forma de resolver
Usar reduce:
function somarTodos(numeros: readonly number[]): number {
return numeros.reduce((acc, num) => acc + num, 0);
}
Saída esperada
15