title: react-redux connect() and error TS2345
body: <p>I'm having trouble to figure out why this code fails to build with the following error: </p>
  
  <pre><code>(43,3): error TS2345: Argument of type 'typeof Day' is not assignable to parameter of type 'Component&lt;Props | (Props &amp; ConnectProps &amp; DispatchProps)&gt;'.
    Type 'typeof Day' is not assignable to type 'StatelessComponent&lt;Props | (Props &amp; ConnectProps &amp; DispatchProps)&gt;'.
      Type 'typeof Day' provides no match for the signature '(props: (Props &amp; { children?: ReactNode; }) | (Props &amp; ConnectProps &amp; DispatchProps &amp; { children?: ReactNode; }), context?: any): ReactElement&lt;any&gt;'.
  </code></pre>
  
  <p>I am running typescript 2.3.3 and the @types/react-redux are at version 4.4.41.</p>
  
  <pre><code>import * as React from "react";
  import { connect } from "react-redux";
  
  export interface Props {
    date: Date;
  }
  
  export interface ConnectProps {
    shifts: string[];
  }
  
  export interface DispatchProps {}
  
  class Day extends React.Component&lt;Props &amp; ConnectProps &amp; DispatchProps, null&gt; {
    render() {
      /* simplified */
      return &lt;div /&gt;;
    }
  }
  
  const mapStateToProps = (state: any, ownProps?: Props): ConnectProps =&gt; {
    /* simplified */
    return {
      shifts: []
    };
  };
  
  const mapDispatchToProps = (dispatch: any): DispatchProps =&gt; ({});
  
  export default connect&lt;ConnectProps, DispatchProps, Props&gt;(
    mapStateToProps,
    mapDispatchToProps
  )(Day);
  
  let component = &lt;Day date={new Date()} /&gt;
  </code></pre>
  
  <p>I want to avoid decorators as long as they are experimental.</p>