When working with TypeScript, it is possible to determine the type of a function by using the following method:
function exampleFunc(param: number) {}
type ExampleFuncType = typeof exampleFunc; // RESULT: (param: number) => void
If the function is generic, the type will indicate that it is generic like so:
function genericFunc<T>(param: T) {}
type GenericFuncType = typeof genericFunc; // RESULT: <T>(param: T) => void
However, determining the type of a generic function when a known set of types is used can be tricky:
function genericFunc<T>(param: T) {}
type NumberFuncType = typeof genericFunc<number>; // DESIRED: (param: number) => void
^ error TS1005: ';' expected.