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

如何在TypeScript中遍历Pinia对象属性实现批量赋值?

TypeScript 批量设置对象所有布尔属性为 false 以简化 Pinia Store 赋值

你的场景是要给 Pinia Store 里的 showDeliveryLinesOptions 数组赋值,每个元素的 options 对象需要把所有布尔属性统一设为 false,不想手动逐个编写属性。可以用以下几种更灵活的方式实现:

方法一:利用 keyof 和 Object.fromEntries 动态生成

先提取 options 的类型,再通过 keyof 获取所有属性名,最终生成全为 false 的对象:

// 提取options的类型(从已有Store类型中推导)
type DeliveryOptions = NonNullable<typeof detailsStore.showDeliveryLinesOptions>[number]['options'];

// 封装生成默认options的函数
const createDefaultOptions = (): DeliveryOptions => {
  // 借助类型断言获取所有属性键
  const keys = Object.keys({} as DeliveryOptions) as Array<keyof DeliveryOptions>;
  // 转成键值对数组后生成对象
  return Object.fromEntries(keys.map(key => [key, false])) as DeliveryOptions;
};

// 赋值时直接调用函数
detailsStore.showDeliveryLinesOptions = detailsStore.deliveries.map(delivery => ({
  deliveryId: delivery.DeliveryId,
  options: createDefaultOptions()
}));

这种方式的优势是:后续如果 DeliveryOptions 的属性有增减,代码无需手动修改,会自动适配新属性。

方法二:通用工具函数+类型约束

如果需要复用这类“全属性设为false”的逻辑,可以写一个通用工具函数:

// 通用工具函数:生成所有布尔属性为false的对象
const allFalse = <T extends Record<string, boolean>>(): T => {
  const obj = {} as T;
  // 遍历目标类型的所有属性键
  for (const key in {} as T) {
    obj[key] = false;
  }
  return obj;
};

// 赋值时指定类型调用
type DeliveryOptions = NonNullable<typeof detailsStore.showDeliveryLinesOptions>[number]['options'];
detailsStore.showDeliveryLinesOptions = detailsStore.deliveries.map(delivery => ({
  deliveryId: delivery.DeliveryId,
  options: allFalse<DeliveryOptions>()
}));

方法三:内联简化写法

如果不想额外封装函数,也可以直接在 map 回调里生成:

type DeliveryOptions = NonNullable<typeof detailsStore.showDeliveryLinesOptions>[number]['options'];

detailsStore.showDeliveryLinesOptions = detailsStore.deliveries.map(delivery => {
  const options = {} as DeliveryOptions;
  (Object.keys({} as DeliveryOptions) as Array<keyof DeliveryOptions>).forEach(key => {
    options[key] = false;
  });
  return {
    deliveryId: delivery.DeliveryId,
    options
  };
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:40:17