generics with function expressions
Generic functions
// Something like the following works fine:
function foo<T>(x: T): T { return x; }
// However using an arrow generic function will not:
const foo = <T>(x: T) => x; // ERROR : unclosed `T` tag
// Workaround: Use extends on the generic parameter
// to hint the compiler that it's a generic, e.g.:
const foo = <T extends unknown>(x: T) => x;