Type Alias PascalCasedPropertiesDeep<Value>

PascalCasedPropertiesDeep: Value extends Function
| Date
| RegExp
    ? Value
    : Value extends (infer U)[]
        ? PascalCasedPropertiesDeep<U>[]
        : Value extends Set<infer U>
            ? Set<PascalCasedPropertiesDeep<U>>
            : {
                [K in keyof Value as PascalCase<K>]: PascalCasedPropertiesDeep<
                    Value[K],
                >
            }

Convert object properties to pascal case recursively.

This can be useful when, for example, converting some API types from a different style.

Type Parameters

  • Value
  • PascalCase
  • PascalCasedProperties
import type {PascalCasedPropertiesDeep} from 'type-fest';

interface User {
userId: number;
userName: string;
}

interface UserWithFriends {
userInfo: User;
userFriends: User[];
}

const result: PascalCasedPropertiesDeep<UserWithFriends> = {
UserInfo: {
UserId: 1,
UserName: 'Tom',
},
UserFriends: [
{
UserId: 2,
UserName: 'Jerry',
},
{
UserId: 3,
UserName: 'Spike',
},
],
};