// https://medium.com/@mokremiz/building-a-flexible-dto-mapper-for-react-and-next-js-projects-3ee77055f05d export const mapResponseToDTO = ( responseDTO: U, propertyMappings?: Record ): T => { // Create an empty object that will hold the mapped DTO const mappedDTO: Partial = {} // Loop through each property in the responseDTO for (const key in responseDTO) { // Check if propertyMappings exist and if the current key is in propertyMappings if (propertyMappings && key in propertyMappings) { // If there is a mapping for the current key, use it to set the property in the mappedDTO mappedDTO[propertyMappings[key] as keyof T] = responseDTO[ key ] as unknown as T[keyof T] } else { // If there is no mapping for the current key, use the key as is to set the property in the mappedDTO mappedDTO[key as unknown as keyof T] = responseDTO[ key ] as unknown as T[keyof T] } } // Return the mappedDTO as a type T return mappedDTO as T }