reijkee
reijkee

Reputation: 19

Getting typescript error when pushing object into state array with useState

I want to push new item into my initial state array, using useState hook ,but im getting error: TS2322 Type number is not assignable to type 'never'. ([...pageNumbers, i) underlined

My code:

const [pageNumbers, setPageNumbers] = useState([]);

  for (
    let i = 1;
    i <= Math.ceil(props.totalCommits / props.CommitsPerPage);
    i++
  ) {
    setPageNumbers([...pageNumbers, i]);
  }

Upvotes: 0

Views: 450

Answers (2)

Eddie023
Eddie023

Reputation: 106

If you don't add a <type> when initializing a empty array, typescript will assume the type as React.SetStateAction<never[]>. So, when you tried to add let i = 1, type number into type never, typescript threw the error Type number is not assignable to type 'never'.

You can assign a type when initializing to fix this issue as following.

 const [pageNumber, setPageNumbers] = useState<number[]>([]);

Upvotes: 1

tromgy
tromgy

Reputation: 5803

You need to type the state array like this:

const [pageNumbers, setPageNumbers] = useState<Array<number>>([]);

Upvotes: 1

Related Questions