title: Typescript complains when I try to postMessage back to source
body: <p>This is my code</p>
  <pre><code>window.addEventListener('message', (e) =&gt; {
    e.source.postMessage('hi there, I hear you!', '*');
  });
  </code></pre>
  <p>This is the error:</p>
  <blockquote>
  <p>[ts] Cannot invoke an expression whose type lacks a call signature. Type '((message: any, targetOrigin: string, transfer?: any[]) =&gt; void) | ((message: any, transfer?: any[]) =&gt; void)' has no compatible call signatures.</p>
  </blockquote>
  <p>When I inspect <code>postMessage</code> it seems to be a method on <code>window</code> and have the signature:</p>
  <pre><code>declare function postMessage(
      message: any,
      targetOrigin: string,
      transfer?: any[]
  ): void;
  </code></pre>
  <p>That looks very much like my call signature to me. So what is wrong with my code?</p>