'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: '' }])
如何在 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: '' }])