Type alias TupleDuplicates<T, Seen>

TupleDuplicates<T, Seen>: T extends readonly [infer Head, ...(infer Tail)]
    ? Head extends Seen
        ? Head | TupleDuplicates<Tail, Seen>
        : TupleDuplicates<Tail, Seen | Head>
    : never

Extracts a union of all duplicate elements present within a tuple. Returns never if all tuple elements are unique or if the tuple is empty.

Type Parameters

  • T

    The tuple to evaluate for duplicate elements.

  • Seen = never

    Internal set accumulator tracking previously encountered elements.

Example

TupleDuplicates<['a', 'b', 'a']>; // Result: 'a'
TupleDuplicates<[1, 2, 3, 1, 2]>; // Result: 1 | 2
TupleDuplicates<['a', 'b', 'c']>; // Result: never

See

NoTupleDuplicates