title: Generic and discriminated types?
body: <p>Hey an idea came to mind but I don't know how to type it or even if it is possible at all.</p>
  <p>How can we define the <code>SomeType</code> type so the <code>first</code> property can be anything of the <code>T</code> but the <code>second</code> property can't be the same as <code>first</code>?</p>
  <pre><code>type SomeType&lt;T&gt; = {
    first: T; // any option based on T
    second: T; // everything on T except what `first` is using
  };
  
  // Example:
  const value: SomeType&lt;1 | 2 | 3&gt; = {
    first: 1,
    second: 2 // can be 2 or 3 but not the same as `first`
  };
  </code></pre>