Javascript 从react router dom属性升级版本4 useParams()后出现TypeScript错误';sumParams';不存在于类型';{}';
升级到版本4后,我收到一个typeScript错误 在react router dom的useParams()中使用Javascript 从react router dom属性升级版本4 useParams()后出现TypeScript错误';sumParams';不存在于类型';{}';,javascript,reactjs,typescript,react-router-dom,react-dom,Javascript,Reactjs,Typescript,React Router Dom,React Dom,升级到版本4后,我收到一个typeScript错误 在react router dom的useParams()中使用 “typescript”:“^4.0.2” 该项目运行良好,只有在升级后才会抛出错误useParams是通用的。您需要通过指定泛型参数的值来告诉typescript正在使用哪些参数 有几种方法可以解决这个问题 这是我最喜欢的方式 const { sumParams } = useParams<{ sumParams: string }>(); 然后在组件中 cons
“typescript”:“^4.0.2”
该项目运行良好,只有在升级后才会抛出错误
useParams
是通用的。您需要通过指定泛型参数的值来告诉typescript正在使用哪些参数
有几种方法可以解决这个问题
这是我最喜欢的方式
const { sumParams } = useParams<{ sumParams: string }>();
然后在组件中
const { sumParams } = useParams<ParamTypes>();
注意:这样您将无法将其设置为字符串
或
更多选项用于:
要使其像以前一样工作,只需添加“:any” 另一个选择是:
const { sumParams } = useParams() as {
sumParams: string;
}
您好@keemor我给了您一个投票,并在我的回答中引用了您的话我喜欢这种方法,谢谢。您知道TS版本之间发生了什么变化导致此错误吗?我在更改日志中找不到任何提示这将发生更改的内容。更新:我在npm上对typescript版本进行了二进制搜索,这在版本4.0.0-dev.20200624和版本4.0.0-dev.20200625之间开始成为一个问题。您可以在这里查看这些版本之间的差异:谢谢,这就是我所做的:const{sumParams}:any=useParams();到目前为止,我还没有看到放弃像JS这样优雅、动态的语言而使用复杂的TS的好处,但也许有一天我会得到它。。。
interface ParamTypes {
sumParams: string;
}
const { sumParams } = useParams<ParamTypes>();
const { sumParams } : any = useParams();
const { sumParams } = useParams() as {
sumParams: string;
}
const { sumParams } : any = useParams();
const { sumParams } = useParams() as {
sumParams: string;
}