在使用react-router-dom的时候,用到了useMatches的方法,ts一直提示报错,如下:
根据提示,找到了这个类型:
1 | export interface UIMatch<Data = unknown, Handle = unknown> { |
这才对泛型有了一丢丢理解。
使用时的场景:
1 | const location = useLocation() |
breadcrumb一直提示报错
发现matches的数据类型为UIMatch<unknown, unknown>所以报错
根据UIMatch的类型提示,我们发现Data和Handle的类型为unknown,所以这时候需要使用any进行强制类型转换, 代码如下:
let matches = useMatches() as any;
``
或者将matches的类型声明:let matches:UIMatch<any, any>[] = useMatches()
注意的是:unknown只能接受any或者unknown类型。
接下来展示两个示例:
- 示例一
1 | interface IParams<D = number, M = string> { |
- 示例二
1 | function test <T> (arg:T):T{ |