Formik中使用{...(values.val1= true)}报Spread types类型错误求解决
问题解决:消除Spread类型错误并保留赋值功能
你写的{...(values.val1= true)}之所以报错,核心原因是赋值表达式values.val1 = true返回的是布尔值true,而扩展运算符...只能作用于对象、数组这类可迭代的类型。虽然赋值操作本身确实生效了,但这种写法不符合类型检查规则,所以会抛出错误提示。
要实现功能同时消除错误,有两种更规范的写法:
如果允许修改原
values对象:// 先完成赋值 values.val1 = true; // 再扩展原对象生成新对象 const targetObj = {...values};更推荐的 immutable 写法(不修改原对象,直接生成包含新属性的新对象):
const targetObj = {...values, val1: true};
第二种写法直接通过对象扩展语法覆盖val1属性,既简洁又符合类型规范,完全不会触发错误提示,同时保留了原对象的其他属性,也实现了将val1设为true的需求。
内容的提问来源于stack exchange,提问作者lafrancaize
相关产品推荐
相关产品推荐

