/** * Skip evaluating `U` if `T` is `unknown`. */ type EvalIfNotUnknown = unknown extends T ? never : U; /** * Resolve mapped types and show the derived keys and their types when hovering in * VS Code, instead of just showing the names those mapped types are defined with. */ type Prettify = { [K in keyof T]: T[K]; } & {}; /** * Get the keys of T without any keys of U. */ type Without = { [P in Exclude]?: never; }; /** * Restrict using either exclusively the keys of `T` or exclusively the keys of `U`. * * No unique keys of `T` can be used simultaneously with any unique keys of `U`. * * @example * ```ts * const myVar: XOR<{ data: object }, { error: object }> * ``` * * Supports from 2 up to 200 generic parameters. * * More: https://github.com/maninak/ts-xor/tree/master#description * */ type XOR = Prettify<(Without & A) | (Without & B) | EvalIfNotUnknown & C> | EvalIfNotUnknown & D> | EvalIfNotUnknown & E> | EvalIfNotUnknown & F> | EvalIfNotUnknown & G> | EvalIfNotUnknown & H> | EvalIfNotUnknown & I> | EvalIfNotUnknown & J> | EvalIfNotUnknown & K> | EvalIfNotUnknown & L> | EvalIfNotUnknown & M> | EvalIfNotUnknown & N> | EvalIfNotUnknown & O> | EvalIfNotUnknown & P> | EvalIfNotUnknown & Q> | EvalIfNotUnknown & R> | EvalIfNotUnknown & S> | EvalIfNotUnknown & T> | EvalIfNotUnknown & AA> | EvalIfNotUnknown & AB> | EvalIfNotUnknown & AC> | EvalIfNotUnknown & AD> | EvalIfNotUnknown & AE> | EvalIfNotUnknown & AF> | EvalIfNotUnknown & AG> | EvalIfNotUnknown & AH> | EvalIfNotUnknown & AI> | EvalIfNotUnknown & AJ> | EvalIfNotUnknown & AK> | EvalIfNotUnknown & AL> | EvalIfNotUnknown & AM> | EvalIfNotUnknown & AN> | EvalIfNotUnknown & AO> | EvalIfNotUnknown & AP> | EvalIfNotUnknown & AQ> | EvalIfNotUnknown & AR> | EvalIfNotUnknown & AS> | EvalIfNotUnknown & AT> | EvalIfNotUnknown & BA> | EvalIfNotUnknown & BB> | EvalIfNotUnknown & BC> | EvalIfNotUnknown & BD> | EvalIfNotUnknown & BE> | EvalIfNotUnknown & BF> | EvalIfNotUnknown & BG> | EvalIfNotUnknown & BH> | EvalIfNotUnknown & BI> | EvalIfNotUnknown & BJ> | EvalIfNotUnknown & BK> | EvalIfNotUnknown & BL> | EvalIfNotUnknown & BM> | EvalIfNotUnknown & BN> | EvalIfNotUnknown & BO> | EvalIfNotUnknown & BP> | EvalIfNotUnknown & BQ> | EvalIfNotUnknown & BR> | EvalIfNotUnknown & BS> | EvalIfNotUnknown & BT> | EvalIfNotUnknown & CA> | EvalIfNotUnknown & CB> | EvalIfNotUnknown & CC> | EvalIfNotUnknown & CD> | EvalIfNotUnknown & CE> | EvalIfNotUnknown & CF> | EvalIfNotUnknown & CG> | EvalIfNotUnknown & CH> | EvalIfNotUnknown & CI> | EvalIfNotUnknown & CJ> | EvalIfNotUnknown & CK> | EvalIfNotUnknown & CL> | EvalIfNotUnknown & CM> | EvalIfNotUnknown & CN> | EvalIfNotUnknown & CO> | EvalIfNotUnknown & CP> | EvalIfNotUnknown & CQ> | EvalIfNotUnknown & CR> | EvalIfNotUnknown & CS> | EvalIfNotUnknown & CT> | EvalIfNotUnknown & DA> | EvalIfNotUnknown & DB> | EvalIfNotUnknown & DC> | EvalIfNotUnknown & DD> | EvalIfNotUnknown & DE> | EvalIfNotUnknown & DF> | EvalIfNotUnknown & DG> | EvalIfNotUnknown & DH> | EvalIfNotUnknown & DI> | EvalIfNotUnknown & DJ> | EvalIfNotUnknown & DK> | EvalIfNotUnknown & DL> | EvalIfNotUnknown & DM> | EvalIfNotUnknown & DN> | EvalIfNotUnknown & DO> | EvalIfNotUnknown & DP> | EvalIfNotUnknown & DQ> | EvalIfNotUnknown & DR> | EvalIfNotUnknown & DS> | EvalIfNotUnknown & DT> | EvalIfNotUnknown & EA> | EvalIfNotUnknown & EB> | EvalIfNotUnknown & EC> | EvalIfNotUnknown & ED> | EvalIfNotUnknown & EE> | EvalIfNotUnknown & EF> | EvalIfNotUnknown & EG> | EvalIfNotUnknown & EH> | EvalIfNotUnknown & EI> | EvalIfNotUnknown & EJ> | EvalIfNotUnknown & EK> | EvalIfNotUnknown & EL> | EvalIfNotUnknown & EM> | EvalIfNotUnknown & EN> | EvalIfNotUnknown & EO> | EvalIfNotUnknown & EP> | EvalIfNotUnknown & EQ> | EvalIfNotUnknown & ER> | EvalIfNotUnknown & ES> | EvalIfNotUnknown & ET> | EvalIfNotUnknown & FA> | EvalIfNotUnknown & FB> | EvalIfNotUnknown & FC> | EvalIfNotUnknown & FD> | EvalIfNotUnknown & FE> | EvalIfNotUnknown & FF> | EvalIfNotUnknown & FG> | EvalIfNotUnknown & FH> | EvalIfNotUnknown & FI> | EvalIfNotUnknown & FJ> | EvalIfNotUnknown & FK> | EvalIfNotUnknown & FL> | EvalIfNotUnknown & FM> | EvalIfNotUnknown & FN> | EvalIfNotUnknown & FO> | EvalIfNotUnknown & FP> | EvalIfNotUnknown & FQ> | EvalIfNotUnknown & FR> | EvalIfNotUnknown & FS> | EvalIfNotUnknown & FT> | EvalIfNotUnknown & GA> | EvalIfNotUnknown & GB> | EvalIfNotUnknown & GC> | EvalIfNotUnknown & GD> | EvalIfNotUnknown & GE> | EvalIfNotUnknown & GF> | EvalIfNotUnknown & GG> | EvalIfNotUnknown & GH> | EvalIfNotUnknown & GI> | EvalIfNotUnknown & GJ> | EvalIfNotUnknown & GK> | EvalIfNotUnknown & GL> | EvalIfNotUnknown & GM> | EvalIfNotUnknown & GN> | EvalIfNotUnknown & GO> | EvalIfNotUnknown & GP> | EvalIfNotUnknown & GQ> | EvalIfNotUnknown & GR> | EvalIfNotUnknown & GS> | EvalIfNotUnknown & GT> | EvalIfNotUnknown & HA> | EvalIfNotUnknown & HB> | EvalIfNotUnknown & HC> | EvalIfNotUnknown & HD> | EvalIfNotUnknown & HE> | EvalIfNotUnknown & HF> | EvalIfNotUnknown & HG> | EvalIfNotUnknown & HH> | EvalIfNotUnknown & HI> | EvalIfNotUnknown & HJ> | EvalIfNotUnknown & HK> | EvalIfNotUnknown & HL> | EvalIfNotUnknown & HM> | EvalIfNotUnknown & HN> | EvalIfNotUnknown & HO> | EvalIfNotUnknown & HP> | EvalIfNotUnknown & HQ> | EvalIfNotUnknown & HR> | EvalIfNotUnknown & HS> | EvalIfNotUnknown & HT> | EvalIfNotUnknown & IA> | EvalIfNotUnknown & IB> | EvalIfNotUnknown & IC> | EvalIfNotUnknown & ID> | EvalIfNotUnknown & IE> | EvalIfNotUnknown & IF> | EvalIfNotUnknown & IG> | EvalIfNotUnknown & IH> | EvalIfNotUnknown & II> | EvalIfNotUnknown & IJ> | EvalIfNotUnknown & IK> | EvalIfNotUnknown & IL> | EvalIfNotUnknown & IM> | EvalIfNotUnknown & IN> | EvalIfNotUnknown & IO> | EvalIfNotUnknown & IP> | EvalIfNotUnknown & IQ> | EvalIfNotUnknown & IR> | EvalIfNotUnknown & IS> | EvalIfNotUnknown & IT>>; export { XOR };