类型为 never[] 的 Typescript 参数不可分配给类型为 SetStateAction<never[]> 的参数

Cod*_*deG 8 javascript typescript

我有一个打字稿代码,用于组装表单的步骤,它在构建时给我一个错误,这是函数,它给我一个错误:

setVisitedForms((seenForms) => [...seenForms, currentIndex].sort((x, y) => x - y));

  const push = useCallback(
    (form = nextForm) => {
      if(!!currentForm) {
        const currentIndex = forms.indexOf(currentForm);
        if (currentIndex >= 0) {
          setVisitedForms((seenForms) => [...seenForms, currentIndex].sort((x, y) => x - y));
        }
        history.push(`${baseurl}${form}`);
      }
    },
    [baseurl, history, nextForm, currentForm, forms, setVisitedForms]
  );
Run Code Online (Sandbox Code Playgroud)

这是控制台上出现的错误。有谁知道我做错了什么?

Argument of type '(seenForms: never[]) => number[]' is not assignable to parameter of type 'SetStateAction<never[]>'.
Run Code Online (Sandbox Code Playgroud)

Ben*_*est 30

visitedForms听起来您并不打算使用 to be的类型never[],但您写道:

const [visitedForms, setVisitedForms] = useState([])
Run Code Online (Sandbox Code Playgroud)

never[]从默认值推断类型[]

相反,useState用预期的类型进行注释:

const [visitedForms, setVisitedForms] = useState<number[]>([])
Run Code Online (Sandbox Code Playgroud)