1
resposta

Erro na conversão utilizando object assign

Segue, abaixo, erro de conversão. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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!