title: TypeScript rejection with `Type '{}[]' is not assignable to type 'number'`
body: <p>Let's say I create a simple function to double its input,</p>
  
  <pre><code>&gt; let f1: (x: number) =&gt; number = x =&gt; x * 2;
  &gt; .type f1
  let f1: (x: number) =&gt; number
  </code></pre>
  
  <p>If I want to take the first value and double it, I can do either</p>
  
  <pre><code>let f2 = R.pipe( R.take(1), f1 );
  let f2 = R.pipe( R.head, f1 );
  </code></pre>
  
  <p>Both of these work <code>f2([5,4,3])</code> outside of TypeScript. However, with TypeScript I get,</p>
  
  <pre><code>&gt; let f2 = R.pipe( R.take(1), f1 );
  [eval].ts(6,29): error TS2345: Argument of type '(x: number) =&gt; number' is not assignable to parameter of type '(x: {}[]) =&gt; number'.
    Types of parameters 'x' and 'x' are incompatible.
      Type '{}[]' is not assignable to type 'number'.
  
  &gt; let f2 = R.pipe( R.head, f1 );
  [eval].ts(6,26): error TS2345: Argument of type '(x: number) =&gt; number' is not assignable to parameter of type '(x: string) =&gt; number'.
    Types of parameters 'x' and 'x' are incompatible.
      Type 'string' is not assignable to type 'number'.
  </code></pre>
  
  <p>What am I doing wrong. I'm not even sure how to read,</p>
  
  <blockquote>
  <pre><code>Type '{}[]' is not assignable to type 'number'.
  </code></pre>
  </blockquote>
  
  <p>and, I don't see what cause the <code>string</code> in </p>
  
  <blockquote>
  <pre><code>Type 'string' is not assignable to type 'number'.
  </code></pre>
  </blockquote>
  
  <p>(I don't see a <code>string</code> anywhere).</p>