import { trimAndRemoveDuplicatedWhitespacesFromString } from 'src/utils/trim-and-remove-duplicated-whitespaces-from-string'; type OnlyStringPropertiesKey = Extract; type StringPropertyKeys = { [K in OnlyStringPropertiesKey]: T[K] extends string | undefined ? K : never; }[OnlyStringPropertiesKey]; export const trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties = ( obj: T, keys: StringPropertyKeys[], ) => { return keys.reduce((acc, key) => { const occurrence = acc[key]; if ( occurrence === undefined || typeof occurrence !== 'string' || occurrence === null ) { return acc; } return { ...acc, [key]: trimAndRemoveDuplicatedWhitespacesFromString(occurrence), }; }, obj); };