type CapitalizeFirstLetter = S extends `${infer First}${infer Rest}` ? `${Uppercase}${Rest}` : S; /** * Prepend string P to all keys in T. * If K is provided, only prepend P to keys in K. * * @template T - The type to prepend keys to. * @template P - The string to prepend. * @template K - The keys to prepend P to. */ export type PrependKeys = { [key in keyof T as key extends K ? `${P}${CapitalizeFirstLetter}` : key]: T[key] }; export {};