JSX element type 'Route' does not have any construct or call signatures

Viewed 5651

I'm replacing code from javascript to typescript. But, fail building.
- JSX element type 'Router' does not have any construct or call signatures.
- JSX element type 'Switch' does not have any construct or call signatures.
- JSX element type 'Route' does not have any construct or call signatures.

How do I fix this error?

wrong code

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Router, Switch, Route } from 'react-router';
import { Provider } from 'react-redux';
import createBrowserHistory from 'history/createBrowserHistory';

import Counter from './containers/Container';
import store from './stores/store';
import NotFound from './components/NotFound';


const history = createBrowserHistory();

ReactDOM.render(
  <Provider store={store}>
    <Router history={history}>
      <Switch>
        <Route exact path="/counter" component={Counter} />
        <Route path="/counter/:id" component={Counter} />
        <Route component={NotFound}/>
      </Switch>
    </Router>
  </Provider>
  , document.getElementById('app')
);

and same error occurred when I used import { Route } from 'react-router-dom'; .

3 Answers

I had similar issue, after change from

export class Provider extends React.Component<ProviderProps> { }

to

export class Provider extends React.Component<ProviderProps, void> { }

in index.d.ts, the problem gone. Hope this can help you.

Related