TypeScript报错:handleListKeyDown缺少返回类型注解,应指定何种返回类型?
解决TypeScript中React键盘事件处理函数的返回类型问题
这个问题其实很容易解决,你只需要给handleListKeyDown指定void作为返回类型就可以了!
原因很直白:你的这个函数是React的键盘事件处理函数,它不需要返回任何值——你里面的逻辑只是调用event.preventDefault()和setOpen(false),没有任何return语句。TypeScript之所以抛出错误,是因为它无法自动推断出这个函数的返回类型,只能默认隐式设为any,而在严格类型检查模式下,这种隐式any是不被允许的。
修改后的代码如下:
const handleListKeyDown = useCallback((event: React.KeyboardEvent): void => { if (event.key === 'Tab') { event.preventDefault(); setOpen(false); } }, [open]);
顺便补充个小知识点:所有React的事件处理函数(比如点击、键盘、输入类事件的处理函数),标准返回类型都是void,因为React并不依赖事件处理函数的返回值来执行后续逻辑,所以统一用void就不会再遇到这类类型报错啦。
内容的提问来源于stack exchange,提问作者Tomasz Waszczyk




