RecipesChapter 7: Variadic Tuple Types

Typing a curry Function

Recipe 7.3 from The TypeScript Cookbook

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>;
}
Open in TypeScript Playground →