export type SwapDatesWithStrings = { [k in keyof T]: T[k] extends Date | undefined ? string : T[k] extends object ? SwapDatesWithStrings : T[k]; }; export type Returned = { [k in keyof T]: T[k] extends Date | undefined ? string : T[k] extends object ? SwapDatesWithStrings : T[k]; };