POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Por qué @Transform no se ejecuta en class-transformer y cómo solucionarlo

Cómo asegurar que @Transform se ejecute en propiedades derivadas con class-transformer

Publicado el 08/09/2025

Si alguna vez has usado class-transformer con @Transform es posible que te hayas encontrado con que una propiedad derivada aparece como undefined aun cuando agregaste @Transform.

El motivo es sencillo: por defecto class-transformer solo ejecuta @Transform en las propiedades que existen en el objeto plano de entrada. Si el objeto plano solo contiene la clave email, por ejemplo { email: abc@test.com }, entonces cualquier propiedad que no esté presente, como normalized_email, se omite y su transformador no se dispara.

La solución directa es forzar que esa propiedad entre en el pipeline de transformación usando @Expose. Si decoras normalized_email con @Expose y con @Transform el transformador se ejecutara incluso si la clave normalized_email no estaba en el objeto plano de entrada.

Otra alternativa global si no quieres añadir @Expose en cada atributo es ajustar las opciones globales de transformación. Por ejemplo activar excludeExtraneousValues hace que solo se conserven las propiedades marcadas con @Expose, lo que obliga a declarar explícitamente lo que debe mantenerse. Otra opción es usar la estrategia exposeAll para que todas las propiedades queden expuestas por defecto y solo uses @Expose donde necesites un transformador especial.

Si no quieres lidiar con decoradores, una solución simple y fiable es usar un getter calculado en la clase. Definir get normalized_email() { return this.email } evita la necesidad de @Expose o @Transform y siempre devuelve el valor derivado.

Resumen de buenas prácticas: usar @Transform solo si la propiedad existe o combinarlo con @Expose para forzar su ejecución; considerar excludeExtraneousValues o la estrategia exposeAll para control global; y usar getters para propiedades derivadas sencillas y deterministas.

En Q2BSTUDIO somos una empresa de desarrollo de software que ayuda a equipos y empresas a implementar buenas prácticas en arquitecturas y DTOs, así como soluciones robustas de aplicaciones a medida y software a medida. Si necesitas apoyo implementando transformaciones, validaciones y patrones de datos en proyectos reales, nuestros servicios abarcan desde desarrollo de aplicaciones a medida hasta soluciones de inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Contamos con experiencia en ciberseguridad y pentesting para garantizar que tus pipelines y datos estén protegidos y en arquitecturas cloud escalables y seguras.

Si quieres que te ayudemos a elegir la mejor estrategia entre getters, transforms o exposures para tus DTOs o necesitas un desarrollo a medida que integre inteligencia artificial, agentes IA, analitica con power bi o despliegue en servicios cloud aws y azure, ponte en contacto y te asesoramos.

Y tu, te has encontrado con este comportamiento de @Transform alguna vez? Como sueles manejar campos derivados en DTOs getters, transforms u otra estrategia? Cuentanos tu experiencia.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio