type Without = { [P in Exclude]?: never; }; export type MutuallyExclusive = (Without & U) | (Without & T); export type Replace = From extends '' ? T : T extends `${infer Prefix}${From}${infer Suffix}` ? `${Prefix}${To}${Replace}` : T; export type NonNullableProperties = { [K in keyof T]: NonNullable; }; export {};