Explicitly, is it possible to create a generic type IsGenericFunction<T> so
that
IsGenericFunction<<T>(a: T) => T>resolves totrueIsGenericFunction<<T,U>(a: T, b: U) => unknown>resolves totrue(etc.)IsGenericFunction<(a: number) => string>resolves tofalse(etc. etc.)IsGenericFunction<X>resolves to false for any non-function type X
?
My apologies if this is a duplicate, I tried hard to search but there are so many Q&As that boil down to can I figure out the type a generic function was called with (usually at runtime) that I couldn't figure out how to sort through and find out if this more or less unrelated question had been raised and answered.
I can test for being a function type via T extends (...args: any) => any but both generic and non-generic function types pass that test. How can I differentiate between the two, if possible?