UNPKG

ts-gems

Version:

Valuable typing extensions for TypeScript

32 lines (29 loc) 1.26 kB
import { IfNever } from './type-check.js'; export type And<T1, T2, T3 = true, T4 = true, T5 = true, T6 = true> = IfNever<Exclude<T1, undefined | null | false>> extends true ? false : IfNever<Exclude<T2, undefined | null | false>> extends true ? false : IfNever<Exclude<T3, undefined | null | false>> extends true ? false : IfNever<Exclude<T4, undefined | null | false>> extends true ? false : IfNever<Exclude<T5, undefined | null | false>> extends true ? false : IfNever<Exclude<T6, undefined | null | false>> extends true ? false : true; export type Or<T1, T2, T3 = false, T4 = false, T5 = false, T6 = false> = IfNever<Exclude<T1, undefined | null | false>> extends false ? true : IfNever<Exclude<T2, undefined | null | false>> extends false ? true : IfNever<Exclude<T3, undefined | null | false>> extends false ? true : IfNever<Exclude<T4, undefined | null | false>> extends false ? true : IfNever<Exclude<T5, undefined | null | false>> extends false ? true : IfNever<Exclude<T6, undefined | null | false>> extends false ? true : false;