类型错误:'Function' 类型的参数不可分配给类型 '(...args: any[]) any 的参数
类型 'Function' 不匹配签名 '(...args: any[]): any'。
const handleImageSearch = useCallback(
debounce((value) => searchUnsplashImage(value), 400),
^
[],
);
我已经尝试添加
interface IFunction {
(...argArray: any[]): any;
}
const handleImageSearch = useCallback<IFunction>(
debounce((value) => searchUnsplashImage(value), 400),
^
[],
);
但它不起作用。请帮我解决这个问题。
答案 0 :(得分:0)
我在 .jsx
文件上遇到过这个问题,我认为这只会发生在非 tsc
文件的 tsx?
编译中(但不确定)。此外,奇怪的一点是,VSCode 并没有将其检测为错误。
无论如何,问题很明显,这是因为 lodash/debounce
返回了 DebouncedFunc
,如下面的签名所示:
debounce<T extends (...args: any) => any>(func: T, wait?: number, options?: DebounceSettings): DebouncedFunc<T>;
要解决此问题,您可以尝试以下两件事:
debounce()
函数调用上方添加以下注释useCallback(
// @ts-ignore
debounce(),
[]
);
const debounceFn = debounce(...);
const callback = useCallback((...args) => debounceFn(...args), []);
我希望这能解决您的问题。