title: Error when using or operator in a function argument type
body: <p>I have this interface:</p>
  
  <pre><code>interface SimpleAddCase {
    addedAppointment: AddedAppointment;
    addCb: AddCallback;
  }
  
  interface ContinuousAddCase extends SimpleAddCase {
    removedAppointment: AddedAppointment;
    removeCb: RemoveCallback;
  }
  
  type AddedAppointmentArgs = SimpleAddCase | ContinuousAddCase;
  
  type AddAppointment = (args: AddedAppointmentArgs) =&gt; void;
  </code></pre>
  
  <p>but when I pass an instance like this:</p>
  
  <pre><code>addAppointmentCallbackContinuousCase = ({
      addedAppointment: { day, number, time, id },
      addCb,
      removedAppointment: params,
      removeCb
    }: ContinuousAddCase): void =&gt; {
  ...}
  </code></pre>
  
  <p>I use addAppointmentCallbackContinuousCase as a prop for a react component.</p>
  
  <pre><code>&lt;AppointmentPicker
            addAppointmentCallback={this.addAppointmentCallbackContinuousCase}
          /&gt;
  </code></pre>
  
  <p>And assign this function to that prop, give me this error:</p>
  
  <pre><code>Type '({ addedAppointment: { day, number, time, id }, addCb, removedAppointment: params, removeCb }: ContinuousAddCase) =&gt; void' is not assignable to type 'AddAppointment'.
    Types of parameters '__0' and 'args' are incompatible.
      Type 'AddedAppointmentArgs' is not assignable to type 'ContinuousAddCase'.
        Type 'SimpleAddCase' is missing the following properties from type 'ContinuousAddCase': removedAppointment, removeCbts(2322)
  </code></pre>
  
  <p>Does someone know how could it be solved?</p>