Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
Cómo transformar datos api a DTO (objeto de transferencia de datos) en TypeScript

Tengo una variedad de vehículos como a continuación.

 export const fetchDataFromApi = () => { return [ { vehicleId: 1, vehicleType: 'car', seats: 4, wheelType: 'summer', updatedAt: new Date().toISOString }, { vehicleId: 2, vehicleType: 'plane', seats: 200, maxAltitude: 8000, updatedAt: new Date().toISOString }, { vehicleId: 3, vehicleType: 'train', seats: 1200, railType: 'whatever', updatedAt: new Date().toISOString }, ]; };

He creado clases de Vehículo, Coche, Avión y Tren. Pero no estoy seguro, esos también podrían ser Interface.

Esta respuesta de API debe manejarse con un DTO que define el tipo de respuesta y permite convertir la respuesta en el tipo DTO.

Entonces, ¿cómo puedo transformar los datos en un DTO escrito? A continuación se muestran las definiciones de mi clase, pero no estoy seguro de cómo implementarlas.

 class Vehicle { vehicleId: number; vehicleType: string; seats: number; updatedAt: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string) { this.vehicleId = vehicleId; this.vehicleType = vehicleType; this.seats = seats; this.updatedAt = updatedAt; } } class Car extends Vehicle { wheelType: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, wheelType: string) { super(vehicleId, vehicleType, seats, updatedAt); this.wheelType = wheelType; } } class Plane extends Vehicle { maxAltitude: number; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, maxAltitude: number) { super(vehicleId, vehicleType, seats, updatedAt); this.maxAltitude = maxAltitude; } } class Train extends Vehicle { railType: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, railType: string) { super(vehicleId, vehicleType, seats, updatedAt); this.railType = railType; } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Solo necesita crear un mapeador para transformar el conjunto de datos.

 const fetchDataFromApi = (): Vehicle[] => { return [ { vehicleId: 1, vehicleType: 'car', seats: 4, wheelType: 'summer', updatedAt: new Date().toISOString }, { vehicleId: 2, vehicleType: 'plane', seats: 200, maxAltitude: 8000, updatedAt: new Date().toISOString }, { vehicleId: 3, vehicleType: 'train', seats: 1200, railType: 'whatever', updatedAt: new Date().toISOString }, ]; }; class Vehicle { vehicleId: number; vehicleType: string; seats: number; updatedAt: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string) { this.vehicleId = vehicleId; this.vehicleType = vehicleType; this.seats = seats; this.updatedAt = updatedAt; } } class Car extends Vehicle { wheelType: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, wheelType: string) { super(vehicleId, vehicleType, seats, updatedAt); this.wheelType = wheelType; } } class Plane extends Vehicle { maxAltitude: number; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, maxAltitude: number) { super(vehicleId, vehicleType, seats, updatedAt); this.maxAltitude = maxAltitude; } } class Train extends Vehicle { railType: string; constructor(vehicleId: number, vehicleType: string, seats: number, updatedAt: string, railType: string) { super(vehicleId, vehicleType, seats, updatedAt); this.railType = railType; } } const vehicleMapper = (vehicle: Vehicle) => { const {vehicleId, vehicleType, seats, updatedAt} = vehicle; switch(vehicle.vehicleType) { case 'car': const {wheelType} = vehicle as Car; return new Car(vehicleId, vehicleType, seats, updatedAt, wheelType); case 'plane': const {maxAltitude} = vehicle as Plane; return new Plane(vehicleId, vehicleType, seats, updatedAt, maxAltitude); case 'train': const {railType} = vehicle as Train; return new Train(vehicleId, vehicleType, seats, updatedAt, railType); default: return new Vehicle(vehicleId, vehicleType, seats, updatedAt); } } const data = fetchDataFromApi(); const vehicles = data.map(vehicleMapper);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda