/** @module array/pushUnique.ts */ import { AppendUnique, BasicTypes } from '../helper-types'; interface IPushUniqueSecondLayer { ]>(arr: Narrow): AppendUnique; (arr: A[]): Array; } interface IPushUnique { <_A extends BasicTypes, _B extends [_A, ..._A[]], _C extends [_B, ..._B[]], _D extends [_C, ..._C[]], _E extends [_D, ..._D[]], _F extends [_E, ..._E[]], _Narrow extends [(_A | _B | _C | _D | _E | _F), ...Array<_A | _B | _C | _D | _E | _F>], A extends BasicTypes, B extends [A, ...A[]], C extends [B, ...B[]], D extends [C, ...C[]], E extends [D, ...D[]], F extends [E, ...E[]], G extends [F, ...F[]], H extends [G, ...G[]], I extends [H, ...H[]], J extends [I, ...I[]], K extends [J, ...J[]], L extends [K, ...K[]], M extends [L, ...L[]], N extends [M, ...M[]], O extends [N, ...N[]], P extends [O, ...O[]], Q extends [P, ...P[]], Narrow extends [(A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P), ...Array]>(item: _Narrow, arr: Narrow): AppendUnique; ]>(item: Item, arr: Narrow): AppendUnique; <_A extends BasicTypes, _B extends [_A, ..._A[]], _C extends [_B, ..._B[]], _D extends [_C, ..._C[]], _E extends [_D, ..._D[]], _F extends [_E, ..._E[]], _Narrow extends [(_A | _B | _C | _D | _E | _F), ...Array<_A | _B | _C | _D | _E | _F>]>(item: _Narrow): ]>(arr: Narrow) => AppendUnique; (item: Item): IPushUniqueSecondLayer; } /** * Push an item to an array if the item isn't already in array. * @param item Item to append if not already in array * @param arr Array to append to * @sig a -> a[] -> a[] * @example * pushUnique([4],[1,2,3,[4]]) * //=> [1,2,3,[4]] : [1,2,3,[4]] */ export declare const pushUnique: IPushUnique; export default pushUnique;