title: typescript type check error does not shown when not all property matches
body: <p>If interface A and interface B have just one common property, typescript compiler-error like this is not shown. Why?</p>
  
  <pre><code>Type '{ a: string; c: number; }' is not assignable to type 'A'.
    Object literal may only specify known properties, and 'c' does not exist in type 'A'. 
  </code></pre>
  
  <p>This error should be shown not only for <strong>object literal</strong> but also <strong>interface</strong>.</p>
  
  <ol>
  <li>Can anyone answer following questions? (Q1, Q2, Q3)</li>
  <li>Are there any way to check more strict?</li>
  </ol>
  
  <pre><code>interface A {
      a?: string;
      b?: number;
  }
  
  interface B {
      a?: string;
      c?: number;
  }
  
  interface C {
      x?: string;
  }
  
  const f = (args: A[]) =&gt; {
      console.log(args);
  };
  
  // (1) error: type check 
  const x = () =&gt; {
      f([{ a: 'a', c: 1 }]);
  };
  
  // (2) no error. Q1. what is the difference between (1) and (2)?
  const y = () =&gt; {
      const args = [
          { a: 'a', c: 1 }
      ]
      f(args);
  };
  
  // (3) error: A and C have no common property
  const z = () =&gt; {
      f([] as C[]);
  };
  
  // (4) no error. [Q2] what is the difference between (3) and (4)?
  const w = () =&gt; {
      f([] as B[]);
  };
  
  // (5) error: A and C have no common property
  const u = () =&gt; {
      f([{ x: 1 } as C]);
  };
  
  // (6) no error. [Q3] what is the difference between (5) and (6)?
  const v = () =&gt; {
      f([{ c: 1 } as B]);
  };
  
  </code></pre>
  
  <p><a href="https://www.typescriptlang.org/play/?ssl=40&amp;ssc=3&amp;pln=19&amp;pc=1#code/JYOwLgpgTgZghgYwgAgILIN4Chm+XAfgC5kBnMKUAcwG4c8AjY5EAVwFsHo6BfLLUJFiIUAIUz1chEuUohak5AmZtO3LHwHho8JMgDCEvMgAezWdV78EAexDlkMZAF5kACjhQqpEqgDaALoAlC4AfBIAkLb2NgA2EAB0sTZUHl6kQbx0WAD0Oe4AjCHQUDZQJGAAngAOKAgAFhAIANbIWNEOJi7uIc7h2MYwbn4Y+CQA5HDjADRKJAXIPMFZ-HnuAEwhIDbIJWUJyACKBQcA7vVwYMjApMhgjcgAJsAwMNAQIHpcYKcQH4UhOAgR4bIIEdp2ByVbpuXr9RQdK6ebzdPyKYyjOATKazBDzRaKAKKIbIjIrXL5NwAZmKUFK5TQ+GBBmQFwAbihtkobOx2HZkNVSrUoFUIfYrgAvGFwox4IaBfC3fSBTIabJrNwAFi2Oz2UAOfkO6wCyHOl2ut3uKGer3enxQ31+-2pgOZWrBYocp2lYVluHlJrgt1EKvJGoArLT6b4mSDDOzOTtbLz+YKbMLRYjkKwfX0-Y5hqMTPieIqDMs1atKQA2HW7On7ZCGqkms1XG53B42t5QD5fCA-P4gdyR2PuWvgrNs3PwwaFubIBaloPIUQVng0IA" rel="nofollow noreferrer">Playground Link</a></p>