Typescript 钩子(批量更新周期)-语义错误TS6133:'';已声明,但从未读取其值

Typescript 钩子(批量更新周期)-语义错误TS6133:'';已声明,但从未读取其值,typescript,react-hooks,hook,Typescript,React Hooks,Hook,我试图提供前一个状态的函数作为参数,以便在单个更新周期内批处理状态更新isOpen=>index,但抛出语义错误TS6133:声明了“isOpen”,但从未读取其值 const initialState = -1; const [isOpen, setOpen] = useState(initialState); 但这一切都过去了 // Passes const handleOpen = (index:number) => { if(index !== isOpen) { s

我试图提供前一个状态的函数作为参数,以便在单个更新周期内批处理状态更新
isOpen=>index
,但抛出
语义错误TS6133:声明了“isOpen”,但从未读取其值

const initialState = -1;
const [isOpen, setOpen] = useState(initialState);
但这一切都过去了

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

只是有些困惑,有什么奇怪的吗?

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

这一次,用你的代码,这不是一个错误,你知道。您可以通过不定义参数来修复它:

setOpen(() => index);
或者在参数前面加上
,告诉TypeScript“是的,我知道这个参数没有被使用,这不是一个错误”:


谢谢你的回答!啊,打字稿
setOpen(() => index);
setOpen(_isOpen => index);