React / TypeScript: consumindo o contexto via HOC

Estou tentando implementar o exemploConsumindo o contexto com um HOC da documentação do React (React 16.3) no TypeScript (2.8) e falhou miseravelmente. Para referência, o código do manual do React:

const ThemeContext = React.createContext('light');

// This function takes a component...
export function withTheme(Component) {
  // ...and returns another component...
  return function ThemedComponent(props) {
    // ... and renders the wrapped component with the context theme!
    // Notice that we pass through any additional props as well
    return (
      <ThemeContext.Consumer>
        {theme => <Component {...props} theme={theme} />}
      </ThemeContext.Consumer>
    );
  };
}

O melhor que eu poderia encontrar:

export interface ThemeAwareProps {
  theme: string;
}

const ThemeContext = React.createContext('light');

export function withTheme<P extends ThemeAwareProps, S>(Component: new() => React.Component<P, S>) {
  return function ThemedComponent(props: P) {
    return (
      <ThemeContext.Consumer>
        {theme => <Component {...props} theme={theme} />}
      </ThemeContext.Consumer>
    );
  };
}

class App extends React.Component {

  public render() {
    return (
      <ThemeContext.Provider value={'dark'}>
        <ThemedButton/>
      </ThemeContext.Provider>
    );
  }
}

ThemedButton.tsx:

interface ThemedButtonProps extends ThemeAwareProps {
}

interface ThemedButtonState{
}

class ThemedButton extends React.Component<ThemedButtonProps, ThemedButtonState> {

  constructor(props: ThemedButtonProps) {
    super(props);
  }


  public render() {
    return (
      <button className={this.props.theme}/>
    )
  }
}

export default withTheme(ThemedButton);

O problema é a última linha (export default withTheme(ThemedButton)) O compilador TypeScript reclama que

Argumento do tipotypeof ThemedButton não é atribuível ao parâmetro do tiponew () => Component<ThemedButtonProps, ThemedButtonState, any>.

o que estou perdendo?

questionAnswers(1)

yourAnswerToTheQuestion