'File' 类型的参数不可分配给 'never' 类型的参数。与打字稿反应

Argument of type 'File' is not assignable to parameter of type 'never'. React with TypeScript

如何在 useState 中设置正确的类型,以便将图像作为文件推送到数组中?

这是我的使用状态:

const [colorsAndImages, setColorsAndImages] = useState([{ images: [], colors: '' }])

这里是我尝试推送图像的地方,但出现错误:

const handleSetImage = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {
        const file = event.target.files;
        const list = [...colorsAndImages]
        list[index].images.push(file?.item(0)!)
        setColorsAndImages(list)
    };

错误在...(file?.item(0)!)

Argument of type 'File' is not assignable to parameter of type 'never'.

在没有显式泛型的情况下使用 useState 挂钩时,TypeScript 将尝试从初始传递值推断类型。

由于您的初始值包含一个空数组(对于 images),TypeScript 无法确定该数组中值的类型,因此将其分配为 never 类型。

要解决此问题,请在初始化状态时明确指定状态类型:

const [colorsAndImages, setColorsAndImages] = useState<{images: File[], colors: string}[]>([{ images: [], colors: '' }])