如何修复React TypeScript中string类型无法分配给never类型参数的报错
错误根因
Argument of type 'string' is not assignable to parameter of type 'never'报错的本质是react-hook-form的setValue方法无法识别address.city为表单的合法字段,因此推断该字段的可接收类型为never,传入字符串自然不匹配类型要求。
修复步骤
- 第一步:定义完整的表单值类型
// 按照你的业务表单结构定义类型 interface FormValues { // 其他表单字段按需补充 address: { city: string; state: string; postalCode: string; } }
- 第二步:给
useForm传入定义好的泛型
// 初始化useForm时绑定类型 const formMethods = useForm<FormValues>({ // 你的原有表单配置,比如默认值、校验规则等 });
完成以上两步后,setValue就可以正确识别address.city字段的类型为string,报错会自动消除。
- 临时兼容方案(不推荐长期使用)
如果需要临时跳过类型校验,可以使用类型断言处理字段名:
formMethods.setValue('address.city' as never, city, { shouldDirty: true, shouldValidate: true, });
补充说明:需要先确认你定义的
UspsCityState类型中city字段的类型为string,避免返回值类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Mark James
相关产品推荐
相关产品推荐

