title: Conditional Optional Argument Type
body: <p>Currently I have this example which demonstrates conditional arguments, The value of the second argument passed in will depend on what the type of the first is.</p>
  
  <pre><code>type Check&lt;G, T&gt; = T extends number ? string : number
  
  function Example&lt;T&gt;(arg: T) { 
      return function &lt;P&gt;(arg: Check&lt;P, T&gt;) { 
  
      }
  }
  
  // Valid:
  
  Example('hello')(1)
  Example(1)('hello')
  </code></pre>
  
  <p>How can I change the code above to make this example work?</p>
  
  <pre><code>Example()(1)
  Example(1)()
  </code></pre>
  
  <p>The issue when I add <code>?</code> it make's it permanently optional, and without it its required.</p>