title: Change function return type while keeping parameters
body: <p>Given a function with an arbitrary signature, is it possible in TypeScript type system to express a new function type with the same signature, but a different return type?</p>
  
  <p>Getting the same type is easy with generics and type constraints (<code>T extends Function</code>). Conditional types with <code>infer</code> keyword allow one to extract the return type. But can something similar be done with the function's parameters?</p>