UNPKG

748 BTypeScriptView Raw
1type EmptyArray = readonly never[] & {length: 0};
2type NonEmptyArray<T> = readonly [T, ...T[]] | readonly [...T[], T] | readonly [T, ...T[], T];
3
4/**
5Get consecutively unique elements from an array.
6
7@returns A function, that when called, will return a random element that is never the same as the previous.
8
9@example
10```
11import uniqueRandomArray from 'unique-random-array';
12
13const random = uniqueRandomArray([1, 2, 3, 4]);
14
15console.log(random(), random(), random(), random());
16//=> 4 2 1 4
17```
18*/
19export default function uniqueRandomArray<T>(array: EmptyArray): () => undefined;
20export default function uniqueRandomArray<T>(array: NonEmptyArray<T>): () => T;
21export default function uniqueRandomArray<T>(array: readonly T[]): () => T | undefined;