描述:我正在尝试使用来自表单的属性值更新我的useState
newCase。
问题:赋值导致错误:类型'string'不能赋值给类型'never',我不知道如何修复它。
下面是case对象的接口:
export interface ICases {
materials: Material[]
finalActivity: boolean
existingCase: boolean
timestamp: Timestamp
description: string
userId: string
caseName: string
geoLocation: string
done: boolean
id: string
parentActivityID: string
first: boolean
}
下面是与AddCase模态相关的代码。
const [newCase, setNewCase] = useState<ICases>()
const updateCase = (key: keyof ICases, value: string) => {
const updatedCase = newCase ? { ...newCase } : ({} as ICases)
updatedCase[key] = value
setNewCase(updatedCase)
}
2条答案
按热度按时间gudnpqoy1#
您的问题是
keyof
中的键不一定有字符串值。要解决这个问题,我们可以只获取具有字符串值的键。或者,如果希望value与键的类型匹配,可以执行以下操作:
a5g8bdjr2#
出现此错误的原因是,您尝试将字符串值分配给
Material[]
、Timestamp
、boolean
或number
类型的属性,但这是不可能的。若要解决此问题,需要将value参数转换为正确的类型,然后再将其分配给updatedCase对象。例如,可以使用switch语句根据key参数确定正确的类型:注意:这只是解决问题的一种方法。根据您的特定用例,您可能需要以不同的方式处理强制转换。