title: In Typescript, define a type for an array where the first element is more specific than the rest
body: <p>I would like to define a type for an array whose first element is a specific type (e.g. Function), and the remaining elements are the empty type. For example:</p>
  
  <pre><code>type FAs = [Function, {}, {}, {}, ...]; // pseudo code
  </code></pre>
  
  <p>Is such a thing possible?</p>
  
  <p>The purpose is to provide a single-argument function like this:</p>
  
  <pre><code>const myCaller = ([fun, ...args]: FAs) =&gt; fun.apply(args);
  </code></pre>
  
  <p>An alternative approach would be to use two arguments to <code>myCaller</code>, like this:</p>
  
  <pre><code>const myCaller = (fun: Function, args: any[]) =&gt; fun.apply(args);
  </code></pre>
  
  <p>but for aesthetic reasons I would prefer to use a single argument. I also wonder if the type system supports what is arguably an arbitrary-length tuple. Maybe such a thing is undesirable for computer science reasons I don't understand.</p>