В настоящее время я работаю над проектом React с использованием TypeScript и ReactRouter . В каком-то месте я использую хук NavLink следующим образом:
const {itemPath} = props // itemPath is a string
return (
<Router>
<div>
<ul>
<li>
<NavLink
to="/"
isActive={(match: any, location: any): boolean => {
if (!match) {
return false;
}
if (location.pathname === itemPath) return true;
return false;
>
Home
</NavLink>
</li>
...
Как вы можете видеть, в функции isActive
я просто возвращаю true
, если фактический путь (location.pathname
) тоже равно itemPath
, которое исходит от реквизита.
Проблема здесь в том, что я использую тип any
для обоих аргументов обратного вызова isActive
: match
и location
. Поэтому я решаю присваивать им правильный тип, но в документации сказано использовать это определение типа, использующее обобщенные значения:
isActive?<Params>(match: match<Params>, location: Location<History<HistoryLocationState = History.PoorMansUnknown>.PoorMansUnknown>): boolean
К сожалению, я вообще не знаю, как набирать аргументы. У кого-нибудь есть идеи?