title: Typescript: number type can be assigned to string type using Omit, Optional, Intersection Types
body: <p>Could you please tell me why the following code does not cause an error?</p>
  <p><a href="https://www.typescriptlang.org/play?#code/C4TwDgpgBAcgrgWwEYQE4BVzQLxQN4CwAUFFAGYCWEANgCYD8AXPlBbcwM7CoUB2A5gG4ovRClQB5VAGVuffkxFi0UAL6Di64qEhRZPAZl24JCCsAA88ZGiMQANFABElGrScA+KADJ8xUq50inis7FBcBvxqPiyiNpIycgKKEfJqGkRaRMQAxgD2vFxQwBBFuAAUHMz68nYAlFDYXoQkUPmFwCLM1uJ2jeHCAPSDInlQaKh5qJoZxEA" rel="nofollow noreferrer">Playground Link</a></p>
  <pre><code>type NumberType = {
    field?: { id: string; numberOrString?: number }
  };
  type StringType = Omit&lt;NumberType, &quot;field&quot;&gt; &amp; {
    field?: { id: string } &amp; { numberOrString?: string }
  };
  
  const test = (s: StringType) =&gt; {
    // `numberOrString?: number` can be assigned to `numberOrString?: string`
    const n: NumberType = s; // no error
  };
  </code></pre>