Sha256: 1567c6dcf728b0c1044606f830aafd404c00590af56d375399edef82e9ddce92
Contents?: true
Size: 1.19 KB
Versions: 28
Compression:
Stored size: 1.19 KB
Contents
import type {CamelCaseOptions} from './camel-case'; import type {PascalCase} from './pascal-case'; /** Convert object properties to pascal case recursively. This can be useful when, for example, converting some API types from a different style. @see PascalCase @see PascalCasedProperties @example ``` 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', }, ], }; ``` @category Change case @category Template literal @category Object */ export type PascalCasedPropertiesDeep<Value, Options extends CamelCaseOptions = {preserveConsecutiveUppercase: true}> = Value extends Function | Date | RegExp ? Value : Value extends Array<infer U> ? Array<PascalCasedPropertiesDeep<U, Options>> : Value extends Set<infer U> ? Set<PascalCasedPropertiesDeep<U, Options>> : { [K in keyof Value as PascalCase<K, Options>]: PascalCasedPropertiesDeep<Value[K], Options>; };
Version data entries
28 entries across 28 versions & 2 rubygems