You can annotate this in the following way:
function curry(fn: (...args: any[]) => any): (this: CallableFunction, ...args: any[]) => any {
...
In your context, youthe code is calling apply and bind on this. In order to do that this may be typed as a CallableFunction.