使用useState将对象推入状态数组时出现typescript错误



我想把新项目推到我的初始状态数组中,使用useState钩子,但我得到错误:TS2322类型号码不能分配给类型'never'。([…pageNumbers, i)下划线

我代码:

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

您需要像这样输入状态数组:

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

如果在初始化空数组时不添加<type>, typescript将假定该类型为React.SetStateAction<never[]>。因此,当您尝试将let i = 1,类型number添加到类型never中时,typescript抛出错误Type number is not assignable to type 'never'

你可以在初始化时指定一个类型来解决这个问题,如下所示。

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