type level numeric comparator
export type CreateArrayWithLengthX<
LENGTH extends number,
ACC extends unknown[] = []
> = ACC['length'] extends LENGTH
? ACC
: CreateArrayWithLengthX<LENGTH, [...ACC, 1]>
export type CompareAToB<
A extends number[],
B extends number[]
> = A['length'] extends B['length']
? 'equal'
: A extends [infer C, ...infer D extends number[]]
? B extends [infer M, ...infer N extends number[]]
? CompareAToB<D, N>
: 'greater'
: B['length'] extends 0
? 'equal'
: 'lesser'
type E = CompareAToB<CreateArrayWithLengthX<99>,CreateArrayWithLengthX<100>> // lesser
// ^?
type F = CompareAToB<CreateArrayWithLengthX<100>,CreateArrayWithLengthX<100>> // equal
// ^?
type G = CompareAToB<CreateArrayWithLengthX<101>,CreateArrayWithLengthX<100>> // greater
// ^?
max valid number is 1000
Top comments (0)