1
resposta

Dtos e tipagem direto no request

Eu estava fazendo o CRUD de adotante como pedido na aula-4 e me deparei com um erro no caso ao pegarmos o req.body o TS o tipa como any eu coloquei no chat gpt e ele disse sobre Dtos e para tipar o req.body direto na request. Bom queria saber se isso e uma boa arquitetura e se vai ensiar na carreira de desenvolvimento back-end com nd JS

    async criaAdotante(req: Request<{},{},CriaAdotanteDTO>, res: Response) {
        try {
            const { nome, senha, celular, foto, endereco } = req.body;

            const novoAdotante = new AdotanteEntity(nome,senha,celular,foto,endereco);
            await this.repository.criaAdotante(novoAdotante);

            return res.status(201).json('criado');
        } catch (error) {
            res.status(500).json('erro');
        }
    }
1 resposta

Olá Guilherme! Como vai?

É ótimo que você esteja se aprofundando em boas práticas de tipagem com TypeScript. Utilizar DTOs (Data Transfer Objects) para tipar o req.body é uma prática bastante recomendada, especialmente em projetos de maior escala. Isso não só ajuda a manter o código mais organizado e legível, mas também garante que você está trabalhando com os tipos esperados, reduzindo a chance de erros em tempo de execução.

No seu exemplo, você está utilizando um DTO chamado CriaAdotanteDTO para tipar o req.body. Isso é uma boa prática porque permite que você defina claramente quais propriedades são esperadas no corpo da requisição. Além disso, facilita a manutenção e a escalabilidade do seu código, pois qualquer alteração na estrutura dos dados pode ser facilmente gerenciada através do DTO.

Essa abordagem é bastante valorizada na carreira de desenvolvimento back-end, especialmente quando se trabalha com Node.js e TypeScript, pois promove um código mais seguro e robusto. Além disso, ao trabalhar em equipe, isso ajuda na comunicação entre desenvolvedores, já que todos têm uma referência clara de como os dados devem ser estruturados.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.