blob: d6d46f7e8d0c3e55919c249e4346f1509883e6bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
export type UnarrayIfOnlyHead<T extends readonly any[]> = T extends [
infer Head,
infer Next
]
? T
: T extends [infer Head]
? Head
: T;
type ARR_EQUAL_SENTINEL = { __arrEq: true };
export type ArrayEqual<
T extends readonly any[],
Last = ARR_EQUAL_SENTINEL
> = T extends [infer Head, ...infer Tail]
? Last extends ARR_EQUAL_SENTINEL
? ArrayEqual<Tail, Head>
: Head extends Last
? Last extends Head
? ArrayEqual<Tail, Head>
: false
: false
: true;
|