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

Typescript如何仅在条件为真时更新对象属性值并保留旧值

TypeScript 条件更新对象属性的简洁实现方案

你可以通过以下两种无冗余if语句的方式实现需求,两种方案均不需要手动声明旧属性值:

方案1:条件展开对象(生成新对象,适用于不可变数据场景)

通过展开空对象的特性,条件为假时不会覆盖原有属性,完全符合React等框架的不可变数据规范,TS可自动推导类型无报错:

// 假设这是你的原有对象
const oldObject = {
  updatedAt: new Date('2023-01-01'),
  otherProp: 'xxx'
}
const isUpdated: boolean = false;

const updatedObject = {
  // 先展开原有对象的所有属性
  ...oldObject,
  // 条件为真时展开带新值的对象,条件为假时展开空对象不做覆盖
  ...(isUpdated ? { updatedAt: new Date() } : {})
}

方案2:逻辑与赋值(直接修改原对象,性能最优)

如果允许直接修改原对象,一行代码即可完成操作:

const isUpdated: boolean = true;
const oldObject = { updatedAt: new Date('2023-01-01') };

// 条件为真时才执行赋值操作,条件为假时直接短路跳过
isUpdated && (oldObject.updatedAt = new Date());

两种方案都可以避免你原来写法中需要手动填写旧值的问题,不会出现旧值修改后需要同步更新赋值语句的疏漏。

内容的提问来源于stack exchange,提问作者markWanka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:12:04