/** * Deduplicate a tuple type by its values. Order is preserved and the first * occurence of each value is kept. * * @template T Tuple to deduplicate. * @example Unique<[1, 1, 2, 3, 3]> // [1, 2, 3] */ type Unique = T extends [] ? R : T extends [...infer Rest, infer A] ? A extends Rest[number] ? Unique : Unique : never; export type { Unique };