TypeScript:隐式键入“any”,因为没有类型注释并且在其自己的初始值设定项中直接或间接引用

Tyl*_*ler 7 typescript reactjs

使用以下代码片段我收到以下错误: TypeScript error: 'route' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own 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
Run Code Online (Sandbox Code Playgroud)

我正在处理代码的完整部分,并且必须升级一个包,然后突然开始抱怨。(包是react-router-dom和@types/react-router-dom)。

我不太确定如何克服这个问题,而且我对函数中第二个参数的情况有点困惑。看起来他们试图识别默认的空参数,但是他们已经在左侧填写了route和 的值history。

编辑:我通过添加以下内容解决了该问题:

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

这解决了问题,但是,我仍然不确定为什么这样定义。