Когда вы используете тип как любой, вы портите вкус машинописи.
Теперь, глядя на ваш код, я думаю, что вы хотите, чтобы пользователь перешел по определенному пути наНа основании значения auth в подпорках.и все остальные реквизиты должны быть такими же, как и в реакции-маршрутизаторе.
И ясная ошибка, которую я вижу в вашем коде, заключается в том, что вы получаете каждую опору в качестве параметра в функциональном компоненте, но он получает только одинпараметр, то есть объект реквизита.
Итак, в вашем подходе это должно быть,
const PrivateRoute = (props: any): any => ()
Теперь более чистый и лучший подход будет:
import React, {Component} from 'react';
import { RouteProps, Route, Redirect } from 'react-router-dom';
export interface PrivateRouteProps extends RouteProps {
auth: boolean | null
}
function PrivateRoute({ component: Component, auth, ...rest }: PrivateRouteProps) {
return (
<Route
{...rest}
render={(props) => auth !== true
? <Component {...props} />
: <Redirect to={{ pathname: '/login', state: { from: props.location } }} />}
/>
)
}