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.