javascript - Typescript Argument av typen never[] kan inte tilldelas parametern av typen SetStateAction<never[]>


Jag har en TypeScript-kod som sammanställer stegen i ett formulär och den ger mig ett fel vid bygget, detta är funktionen och den ger mig ett fel på raden:

setVisitedForms((settSeddFormer) => [...settSeddFormer, 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]
  );

Det här är felet som visas i konsolen. Vet någon vad jag gör fel?

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

Svar #1

Det verkar som att du inte avser att typen av visitedForms ska vara never[], men du skrev:

const [visitedForms, setVisitedForms] = useState([])

vilket härleder typen never[] från standardvärdet [].

Ange istället useState med den avsedda typen:

const [visitedForms, setVisitedForms] = useState<number[]>([])

Svar #2

// the problem
const numbers = []
numbers.push(123) // ERROR

// the solution
const numbers = new Array()
numbers.push(123) // OK

Relaterade artiklar