Segue, abaixo, erro de conversão.
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!