There is a difference between a generic type that happens to be a function and a type that is a generic function.
What you defined there is a generic type that is a function. This means that we can assign this to consts that have the generic types specified:
type FunctionType<TValue> = (value: TValue) => void;
const bar: FunctionType<number> = (value) => { // value is number
}
To define a type that is a generic function we need to put the type parameter before the arguments list
type FunctionType = <TValue>(value: TValue) => void;
const bar: FunctionType = <TValue>(value) => { // generic function
}