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
