devtypes
    Preparing search index...

    Type Alias RequireExactlyOne<T, K>

    RequireExactlyOne: {
        [P in K]: Required<Pick<T, P>> & Partial<Record<Exclude<K, P>, never>> & Omit<
            T,
            K,
        >
    }[K]

    Require exactly one property from a set of properties

    Type Parameters

    • T
    • K extends keyof T = keyof T
    type Test = { a?: string; b?: number; c: boolean };
    type Result = RequireExactlyOne<Test, 'a' | 'b'>;
    // { a: string; b?: never; c: boolean } | { a?: never; b: number; c: boolean }