挂钩(批量更新周期)-语义错误TS6133:声明为''但从不读取其值

时间:2020-09-24 00:56:12

标签: typescript react-hooks hook

我正在尝试提供以前状态的功能作为参数,以便可以在单个更新周期isOpen => index中批处理状态更新,但抛出semantic error TS6133: 'isOpen' is declared but its value is never read

const initialState = -1;
const [isOpen, setOpen] = useState(initialState);
// Fails
const handleOpen = (index:number) => {
  if(index !== isOpen) {
    setOpen(isOpen => index);
  } else {
    setOpen(isOpen => initialState);
  }
};

但是通过了

// Passes
const handleOpen = (index:number) => {
  if(index !== isOpen) {
    setOpen(index);
  } else {
    setOpen(initialState);
  }
};

只是感到困惑,有好奇吗?

1 个答案:

答案 0 :(得分:0)

TypeScript试图警告您为函数定义了一个参数,但从未使用过它。通常,编写执行此操作(忽略显式定义的参数)的代码是错误的。

这次,使用您的代码,这不是一个错误,并且您知道。您可以通过不定义参数来解决此问题:

setOpen(() => index);

或者在参数前面加上_,告诉TypeScript“是的,我知道此参数未被使用,这不是错误”:

setOpen(_isOpen => index);