title: strictNullChecks causes error: hasOwnProperty does not exist for generic types
body: <p>My code works well without --strictNullChecks.</p>
  
  <p>When enabling --strictNullChecks, the following error occurs:</p>
  
  <p>Property 'hasOwnProperty' does not exist on type 'T1'.<br>
  Property 'hasOwnProperty' does not exist on type 'T2'.</p>
  
  <pre class="lang-js prettyprint-override"><code>function extend&lt;T1, T2&gt;(arg1: T1, arg2: T2): T1 &amp; T2 {
      const result: Partial&lt;T1 &amp; T2&gt; = {};
      for (const prop in arg1) {
          if (arg1.hasOwnProperty(prop)) { // error when using --strictNullChecks
              (result as T1)[prop] = arg1[prop];
          }
      }
      for (const prop in arg2) {
          if (arg2.hasOwnProperty(prop)) { // error when using --strictNullChecks
              (result as T2)[prop] = arg2[prop];
          }
      }
      return result as T1 &amp; T2;
  }
  
  </code></pre>