升级到版本4后,我遇到了一个typeScript错误

"typescript": "^4.0.2"

import { useParams } from 'react-router-dom';

const { sumParams } = useParams();

Property 'sumParams' does not exist on type '{}'. 

这个项目运行得很好,只有在升级之后才会出现错误

推荐答案

useParams是通用的.您需要通过指定泛型的值来告诉typescript您正在使用哪些参数

有几种方法可以解决这个问题

This is my favorite way

const { sumParams } = useParams<{ sumParams: string }>();

但是还有一些方法(:

interface ParamTypes {
  sumParams: string;
}

然后在你的组件中

const { sumParams } = useParams<ParamTypes>();

添加任何没有接口的类型

const { sumParams } : any = useParams();

注意:这样您将无法将其设置为字符串

keemor人的更多 Select :

const { sumParams } = useParams() as { 
  sumParams: string;
}

Typescript相关问答推荐

Angular -使用Phone Directive将值粘贴到控件以格式化值时验证器不工作

调用另一个函数的函数的Typescript类型,参数相同

如果在TypeScript中一个原始的类方法是递归的,如何使用类decorator 模式?

在Typescribe中,extends工作,但当指定派生给super时出错""

如何缩小变量访问的对象属性范围?

PrimeNG日历需要找到覆盖默认Enter键行为的方法

类型脚本返回的类型包含无意义的泛型类型名称

如何解决类型T不能用于索引类型{ A:typeof A; B:typeof B;. }'

如何调整对象 struct 复杂的脚本函数的泛型类型?

记录键的泛型类型

部分更新类型的类型相等

使用条件类型的类型保护

Typescript 中相同类型的不同结果

自动通用回调

如何使函数参数数组不相交?

如何从联合类型推断函数参数?

如何使用 AWS CDK 扩展默认 ALB 控制器策略?

递归地排除/省略两种类型之间的公共属性

在 next.js 13.4 中为react-email-editor使用forwardRef和next/dynamic的正确方法

为什么在 useState 中设置 React 组件是一种不好的做法?