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

TypeScript类型转换:如何用解构剩余操作移除嵌套对象属性?

类型转换:移除嵌套属性的解构实现

初始与目标类型定义

// 初始类型
interface Source {
  id: string;
  version: number; // 需要丢弃
  masterVariant: MasterVariant;
}

interface MasterVariant {
  id: number; // 需要丢弃
  sku?: string;
}

// 期望的"轻量化"目标类型
interface Target {
  id: string;
  masterVariant: MasterVariantLight;
}

interface MasterVariantLight {
  sku?: string;
}

基础场景:移除顶层属性

要移除顶层的version属性,可通过顶层解构剩余操作实现:

export class Convert {
    public static toTarget(source: Source): Target {
      const { version, ...result } = source;  
      return result;
    }
}

嵌套属性移除方案

要同时移除顶层version和嵌套的masterVariant.id,可以通过嵌套解构完成:

export class Convert {
    public static toTarget(source: Source): Target {
      // 嵌套解构:丢弃version和masterVariant.id,保留其余属性
      const { 
        version, 
        masterVariant: { id, ...masterVariantLight }, 
        ...rest 
      } = source;
      
      // 重组为Target类型对象返回
      return {
        ...rest,
        masterVariant: masterVariantLight
      };
    }
}

逻辑说明

  1. 对顶层对象source解构,丢弃version属性的同时,深入masterVariant内部做二次解构;
  2. 在masterVariant的解构中,丢弃id属性,剩余部分自动匹配MasterVariantLight类型;
  3. 最后将顶层剩余属性与处理后的masterVariantLight重组,得到符合Target类型的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:41:03