Fala ai Thiago, tudo bem? Vamos lá:
Então gostaria que alguém pudesse me explicar para que serve e a necessidade de utilizar a referida função nessa parte do código. Obrigado!
O join serve para você transformar um array em string, mas, porque eu faria isso? No seu caso, como você está montando um código HTML através de um array você precisa garantir que o resultado do seu template será uma string.
Por padrão, se você utilizar passar um array para um template string ele vai chamar uma função toString existente em todo array por padrão, exemplo:
`${[1,2,3]}`
O resultado dessa template string seria: "1,2,3".
Repare que cada item do array por padrão é separado com uma vírgula, agora se você testar o mesmo array com o join:
`${[1,2,3].join('')}`
Repare que o resultado é: "123".
Ou seja, a gente transformou nosso array em string, porém, removemos o separador dos itens, isso porque passamos uma string vazia para o join, no caso: .join(''). Essa string vazia seria o separador.
Agora voltando para seu código (código da aula):
<tbody>
${model.negociacoes.map(n => {
return `
<tr>
<td>${DateHelper.dataParaTexto(n.data)}</td>
<td>${n.quantidade}</td>
<td>${n.valor}</td>
<td>${n.volume}</td>
</tr>
`
}).join('')}
</tbody>
Se você remover o join, a template string vai inserir uma vírgula entre cada tr na página. Por isso foi utilizado o join, para que não existe essa vírgula.
Espero ter ajudado.