You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:05:20