Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Criar função para formatar valor do saldo e data

Olá, durante o exercício da aula eu desenvolvi a seguinte solução dentro do arquivo saldo-componente.ts:

if (elementoSaldo !== null && elementoDataAcesso !== null) {
    dataEMoedaFormatada(elementoSaldo, elementoDataAcesso);
}

function dataEMoedaFormatada(elementoSaldo, elementoDataAcesso) {
    const dataAcesso = new Date();
    elementoDataAcesso.textContent = formatarData(dataAcesso, FormatoData.DIA_SEMANA_DIA_MES_ANO);
    elementoSaldo.textContent = formatarMoeda(saldo);
    
}

a princípio funcionou, mas a minha dúvida ficou no enunciado do exercício que tem o formato da data Padrão (dd/MM/yyyy) ou Dia da Semana, Dia, Mês e Ano, como se o parâmetro fosse opcional. Ao ver a solução do instrutor:

enum FormatoData {
    PADRAO,
    DIA_SEMANA_DIA_MES_ANO,
    DIA_MES
}

function formatarInformacoes(valor: number, data: Date, formatoData: FormatoData): string {
    const dataFormatada = formatarData(data, formatoData);
    const valorFormatado = formatarMoeda(valor);
    return `${dataFormatada} - ${valorFormatado}`;
}

Percebi que desenvolvi a solução no local errado, acredito que esta função é declarada dentro do arquivo formatters.ts, porém ao analisar a função o parâmetro formatoData é passado com a enum FormatoData com a informação PADRAO, portanto ficou meio confuso para entender com verificar se ele vai aceitar o valor da enum PADRAO ou DIA_SEMANA_DIA_MES_ANO seguindo o enunciado do exercício.

Esse negócio deu um nó na minha cabeça.

1 resposta
solução!

Olá José! Tudo bem?

Entendi que a sua função dataEMoedaFormatada está funcionando, mas você quer entender melhor como lidar com o parâmetro formatoData na função formatarInformacoes.

A solução do instrutor foca em centralizar a lógica de formatação em um único local, o que é uma boa prática. O uso da enumeração FormatoData permite que você especifique o formato desejado ao chamar a função formatarInformacoes. Se você não especificar um formato, o padrão será usado, que é o PADRAO.

Para tornar o parâmetro formatoData opcional, você pode definir um valor padrão para ele na assinatura da função, como já está feito na função formatarData. Por exemplo:

function formatarInformacoes(valor: number, data: Date, formatoData: FormatoData = FormatoData.PADRAO): string {
    const dataFormatada = formatarData(data, formatoData);
    const valorFormatado = formatarMoeda(valor);
    return `${dataFormatada} - ${valorFormatado}`;
}

Dessa forma, quando você chama formatarInformacoes, se não passar o terceiro argumento, ele usará FormatoData.PADRAO automaticamente. Se quiser usar outro formato, basta especificar ao chamar a função, por exemplo:

formatarInformacoes(100, new Date(), FormatoData.DIA_SEMANA_DIA_MES_ANO);

Isso oferece flexibilidade para escolher o formato da data conforme necessário.

Espero ter ajudado. Conte sempre com o apoio do fórum :)

Um abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓