Typing a curry Function
function curry<F extends Function>(fn: F): Curried<F> {
let curried: Function = (...args: any) => {
if (fn.length !== args.length) {
return curried.bind(null, ...args);
}
return fn(...args);
};
return curried as Curried<F>;
}