1
resposta

Não entendi o funcionamento do método reduce

Não entendi muito bem o que está acontecendo dentro do método reduce:

class CalculadorDeArea {

static calcula(...areas: AreaCalculavel[]): number {

    return areas.reduce((total, area) => total + area.calculaArea(), 0);
}

}

1 resposta

O método reduce () aplica uma função simultaneamente contra dois valores da matriz (da esquerda para a direita) para reduzi-la a um único valor.

Sintaxe

array.reduce (callback [, initialValue]);

Detalhes do Parâmetro

callback - Função para executar em cada valor na matriz.

initialValue - objeto a ser usado como o primeiro argumento para a primeira chamada do retorno de chamada.

Então o que está acontecendo é que para cada número do array ele está somando a total fazendo um somatório.

Eu particularmente acho bem feio esse tipo de código. Prefirindo usar for each ao invés dessa flecha. Mas há quem goste.

Eu faria assim:

var total=0;
for each (numero in vetor) {
      total=numero+total;
}

Mas isso é pensamento procedural , em objeto teria que usar a função flecha e o reduce.