Segue, abaixo, erro de conversão.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Segue, abaixo, erro de conversão.
Olá, Eduardo!
Você poderia compartilhar o link do seu repositório no github?
Acredito que esse erro ocorre porque o TypeScript não consegue fazer a verificação de tipos quando utilizamos o Object.assign(). No exemplo que você mostrou, ao mudar o nome de uma das colunas da entidade ProdutoEntity, o código que utiliza a abordagem mais repetitiva em criaProduto() apresenta um erro, enquanto o código que utiliza o Object.assign() em atualizaProduto() não apresenta erro.
Uma solução para utilizar o Object.assign() sem perder a verificação de tipos do TypeScript é utilizar a conversão de tipo (data casting). No método criaProduto(), em vez de atribuir cada propriedade do DTO dadosProduto para a entidade produtoEntity, você pode substituir todo o código repetitivo por uma única linha de Object.assign(), passando produtoEntity como primeiro parâmetro e dadosProduto as ProdutoEntity como segundo parâmetro.
async criaUsuario(dadosDoUsuario: CriaUsuarioDTO) {
const usuarioEntity = new UsuarioEntity();
Object.assign(usuarioEntity, dadosDoUsuario as UsuarioEntity);
return this.usuarioRepository.save(usuarioEntity);
}
Dessa forma, o TypeScript irá verificar se a conversão de tipo é possível e apontar erros caso necessário. Vale ressaltar que, se você fizer alguma mudança definitiva na entidade, é importante gerar e rodar uma nova migração.
Essa mesma abordagem pode ser aplicada nos outros serviços, como usuario.service.ts e pedido.service.ts, para evitar a repetição de código.
Espero ter ajudado! Bons estudos!