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);
}
}
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);
}
}
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.