declare type CamelCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${Lowercase}${Uppercase}${CamelCase}` : Lowercase; declare type KeysToCamelCase = { [K in keyof T as CamelCase]: (T[K] extends Array ? (U extends {} ? Array> : T[K]) : (T[K] extends {} ? KeysToCamelCase : T[K])); }; export default function camelize(obj: T): T extends String ? string : KeysToCamelCase; export {};