我正在开发一个 TypeScript React 应用程序。我想找到并使用 Hook 来处理击键。我找到了以下 JS 组件:
import { useEffect, useState } from "react";
const useKeyPress = (targetKey) => {
const [keyPressed, setKeyPressed] = useState(false);
const downHandler = ({ key }) => {
if (key === targetKey) setKeyPressed(true);
};
const upHandler = ({ key }) => {
if (key === targetKey) setKeyPressed(false);
};
useEffect(() => {
window.addEventListener("keydown", downHandler);
window.addEventListener("keyup", upHandler);
return () => {
window.removeEventListener("keydown", downHandler);
window.removeEventListener("keyup", upHandler);
};
}, []);
return keyPressed;
};
export default useKeyPress;
为了让 TypeScript 不再因为缺少类型而骚扰我,我开始记录它们。第一个很简单:我改成const useKeyPress = (targetKey) => {
了const useKeyPress = (targetKey:string) => {
,效果很好。
但接下来,我想注释const downHandler = ({ key }) => {
. 当我试图说 const downHandler = ({ key:string }) => {
时,TypeScript 拒绝编译,因为我假设 key:string 看起来像一个对象键值对。具体的错误信息是:
'string' 被声明但它的值永远不会被读取。ts(6133)
绑定元素“字符串”隐式具有“任何”类型.ts(7031)
所以现在我很难过。如何注释 TypeScript 以便编译?
在此先感谢您的帮助!