Greater Than
Challenge
In This Challenge, You should implement a type GreaterThan<T, U> like T > U
Negative numbers do not need to be considered.
For example
GreaterThan<2, 1>; //should be true
GreaterThan<1, 1>; //should be false
GreaterThan<10, 100>; //should be false
GreaterThan<111, 11>; //should be true
Good Luck!
Solution
Zur Lösung dieses Problems benötigen wir lediglich einen Akkumulator, um diesen so lange mit Zahlen zu füllen, bis dieser entweder
T entspricht (kleiner) oder U (großer). Falls dies in einem Durchlauf des Typen nicht der Fall ist, wird dieser rekursiv erneut aufgerufen, bis
der Akkumulator die Länge von T oder U erreicht.
// Bsp.: 2, 1
// 1. Durchlauf: T = 2, U = 1, Acc = []
// 2. Durchlauf: T = 2, U = 1, Acc = [1] => damit Laenge 1 = U, und U ist somit kleiner
type GreaterThan<
T extends number,
U extends number,
Acc extends any[] = []
> = T extends Acc["length"]
? false
: U extends Acc["length"]
? true
: GreaterThan<T, U, [...Acc, 1]>;