Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Criar nova data é redundante

Daria para simplesmente usar o operador spread e dar um:

return {... _data};

Tem o mesmo resultado porque o operador spread porque por mais que pela escrita parece que você está retornando um objeto genérico que recebeu os atributos de data, na prática o TS consegue interpretar que como tem as mesmas propriedades de data esse objeto novo é na realidade uma data válida.

2 respostas
solução!

Oi Erik, tudo bem?

No contexto apresentado, o objetivo é evitar a mutabilidade da propriedade _data da classe Negociacao.

O operador spread ({... _data}) cria uma cópia superficial do objeto _data, ou seja, ele copia apenas as propriedades do objeto, mas não as referências dos valores. Portanto, ao utilizar o operador spread, você está criando um novo objeto com as mesmas propriedades do _data, mas sem a referência original.

No entanto, no caso específico apresentado na aula, o objetivo é retornar uma nova instância de Date, que seja igual à data armazenada em _data, mas sem a referência original. Isso é importante para garantir a imutabilidade da data e evitar que modificações sejam feitas diretamente na propriedade _data.

Ao criar uma nova instância de Date utilizando o valor retornado por this._data.getTime(), você está criando uma nova referência para a data, garantindo que qualquer modificação feita nessa nova instância não afetará a data original armazenada em _data.

Portanto, no contexto apresentado, a criação de uma nova data utilizando o construtor new Date(this._data.getTime()) é necessária para garantir a imutabilidade da propriedade _data e evitar modificações indesejadas.

Muito obrigada pela sua contribuição!

Um abraço e bons estudos.

Eu fui testar aqui antes de refutar, e você está certa. Realmente o objeto genérico não funciona como uma instância de data nesse caso. A minha ideia só funciona quando o objeto é usado apenas para guardar informações públicas mesmo. O objeto resultante na minha ideia acaba ficando sem os métodos necessários.