title: Using Ramda curry + placeholder with TypeScript results in "Type 'Placeholder' is not assignable to type 'x'
body: <p>I want to bind known arguments to a callback with Ramda and leave the rest unspecified:</p>
  <pre><code>import * as R from &quot;ramda&quot;;
  
  type Params = Partial&lt;{
    param1: number;
    param2: number;
    param3: number;
  }&gt;;
  
  function getBoundCallback(params: Params) {
    const { param1, param2, param3 } = params;
  
    const callback = (p1: number, p2: number, p3: number) =&gt; {
      // do something
    };
  
    return R.curry(callback)(
      param1 || R.__, 
      param2 || R.__, 
      param3 || R.__
    );
  }
  </code></pre>
  <p>but I get:</p>
  <pre><code>TS2769: No overload matches this call.
    The last overload gave the following error.
      Argument of type 'number | Placeholder' is not assignable to parameter of type 'number'.
        Type 'Placeholder' is not assignable to type 'number'
  </code></pre>
  <p>What is the correct way to do this?</p>
  <p>The only solution I can think of is this:</p>
  <pre><code>const callback = (
      _p1: number | R.Placeholder,
      _p2: number | R.Placeholder,
      _p3: number | R.Placeholder
    ) =&gt; {
      const p1 = _p1 as number;
      const p2 = _p2 as number;
      const p3 = _p3 as number;
  
      // do something
    };
  </code></pre>
  <p>which is far from optimal.</p>
  <p>What is the correct way to do this?</p>
  <p>I use <code>&quot;types/npm-ramda#dist&quot;</code> for Ramda type declarations.</p>