types-kit.or.md

September 4, 2023 ยท View on GitHub

Home > types-kit > Or

Or type

Or operator for types.

Signature:

export type Or<A extends readonly unknown[]> = If<
  IsTuple<A>,
  A extends readonly [infer Current, ...infer Rest]
    ? If<Current, true, Or<Rest>>
    : A extends [...infer Rest, infer Current]
    ? If<Current, true, Or<Rest>>
    : never,
  IsTruthy<ArrayItem<A>>
>

References: If, IsTuple, Or, IsTruthy, ArrayItem

Example

 // Expect: true
 type Foo = Or<[1, 2, false]>
 // Expect: false
 type Bar = Or<[null, undefined, 0]>