在使用React的useCallback
Hook时,如果直接包裹一个函数而没有提供类型参数,TypeScript会默认认为回调函数的参数类型为any
。这是因为useCallback
Hook接受两个参数,第一个是回调函数,第二个是一个依赖数组,而TypeScript在没有明确指定类型的情况下无法推断回调函数的参数类型。
要解决这个问题,你应该为回调函数指定明确的类型。例如,如果你的回调函数接收一个特定类型的参数,可以这样定义:
const handleChange: (value: string, record: RecordType) => void = useCallback(
(value, record) => {
// 你的处理逻辑
},
[dependencyList], // 依赖项数组
);
这里RecordType
是你需要的具体类型,可以根据实际情况进行替换。
另外,如果你希望useCallback
返回的函数保持与原始函数相同的类型签名,也可以在声明时直接指定类型:
const handleChange = useCallback<(value: string, record: RecordType) => void>(
(value, record) => {
// 你的处理逻辑
},
[dependencyList],
);
这样,即使在useCallback
内部,TypeScript也能正确推断出函数参数的类型。