diff --git a/src/driver/connect.ts b/src/driver/connect.ts index 66933a3..b061f31 100644 --- a/src/driver/connect.ts +++ b/src/driver/connect.ts @@ -94,19 +94,20 @@ function link(instance: React.Component, sources: Sources): Wr } export function connect(mapping: Sources) { - return function linkComponent( - ComponentClass: React.ComponentClass, - ): React.ComponentClass { - return class AwesomeApp extends React.PureComponent { - static displayName = `Connected(${ComponentClass.displayName || ComponentClass.name})` - static defaultProps = ComponentClass.defaultProps + return function linkComponent< + State, + ComponentClass extends React.ComponentClass + >(Component: ComponentClass) { + return class ConnectedComponent extends React.PureComponent { + static displayName = `Connected(${Component.displayName || Component.name})` + static defaultProps = Component.defaultProps - state = {} as ExtraP - connectedMethods = link(this, mapping) as WrappedMethods + state: ExtraP = {} as ExtraP + connectedMethods: WrappedMethods = link(this, mapping) render() { const props = Object.assign({}, this.props, this.connectedMethods, this.state) - return React.createElement(ComponentClass, props) + return React.createElement(Component, props) } } }