function head<T>(arr: T[]): T | undefined { return arr[0] }
head([1, 2, 3]) // β 1
head([]) // β undefinedhead<T> returns the first element, preserving the array element type via generic inference.
Challenge: Implement head<T>(arr: T[]): T | undefined returning the first element, or undefined for empty arrays.
head([1, 2, 3]) // β 1
head([]) // β undefined