GetMiddleElement
Challenge
Get the middle element of the array by implementing a GetMiddleElement method, represented by an array
If the length of the array is odd, return the middle element If the length of the array is even, return the middle two elements
For example
type simple1 = GetMiddleElement<[1, 2, 3, 4, 5]>, // expected to be [3]
type simple2 = GetMiddleElement<[1, 2, 3, 4, 5, 6]> // expected to be [3, 4]
Solution
Zur Lösung dieses Problems können wir mittels infer uns von TypeScript immer die mittleren Elemente in eine Typvariable extrahieren lassen, und den Typ so lange rekursiv aufrufen, bis wir nur noch ein oder zwei mittlere Elemente haben. Damit dies auch wie erwartet funktioniert, sollten wir bei einer Länge der Tupel von eins und zwei immer T wieder zurückgeben (Base-Case), da hier keine Mitte gefunden werden kann.
type GetMiddleElement<T extends readonly any[]> = T["length"] extends 1 | 2
? T
: T extends readonly [any, ...infer Middle, any]
? GetMiddleElement<Middle>
: [];