reactjs - TypeScript: implisitt type 'any' på grunn av ingen typeannotasjon og direkte eller indirekte referanse i sin egen initialiserer


Med følgende kodebit får jeg følgende feil: TypeScript-feil: 'route' har implisitt typen 'any' fordi den ikke har en typeannotasjon og refereres direkte eller indirekte i sin egen initializer. TS7022

const store = configureStore()

const renderWithRouter = (
  ui: any,
  {
    route = '/', /* ERROR HERE */
    history = createMemoryHistory({ initialEntries: [route] }),
  } = {},
) => {
  return {
    ...render(
      <Provider store={store}>
        <Router history={history}>{ui}</Router>
      </Provider>,
    ),
    history,
  }
}

export default renderWithRouter

Jeg jobbet i en helt annen del av koden og måtte oppgradere en pakke, og så plutselig begynte dette å klage. (Pakkene var react-router-dom og @types/react-router-dom).

Jeg er ikke helt sikker på hvordan jeg kommer forbi dette, og dessuten er jeg litt forvirret over hva som skjer med den andre parameteren i funksjonen. Det ser ut som de prøvde å identifisere en standard tom parameter, men de har fylt inn verdier på venstre side for route og history.

rediger: Jeg har løst problemet ved å legge til følgende:

interface IRenderParams {
  route: string | undefined;
  history: MemoryHistory<any>
}
...
{
    route = '/', /* ERROR HERE */
    history = createMemoryHistory({ initialEntries: [route] }),
  } = {} as IRenderParams
...

Dette løser problemet, men jeg er fortsatt ikke helt sikker på hvorfor dette er definert slik.

Relaterte artikler