diff options
Diffstat (limited to 'src/lang/ts-lang/util/utils.ts')
| -rw-r--r-- | src/lang/ts-lang/util/utils.ts | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/lang/ts-lang/util/utils.ts b/src/lang/ts-lang/util/utils.ts index ac36ca1..d6d46f7 100644 --- a/src/lang/ts-lang/util/utils.ts +++ b/src/lang/ts-lang/util/utils.ts @@ -6,3 +6,17 @@ export type UnarrayIfOnlyHead<T extends readonly any[]> = T extends [ : 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; |
