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

如何在TypeScript中实现通用函数以移除对象的冗余属性

如何在TypeScript中实现通用函数以移除对象的冗余属性

这其实是一个和之前类似的问题,但我想换个角度重新梳理,重点不在于类型转换本身,而是实际移除对象的冗余属性。

我现在遇到的情况是:手里有一个any类型的对象,需要只保留我定义的接口中存在的属性,把接口里没有的多余属性都剔除掉。

举个例子,我先定义了这两个接口:

interface Address {
  street: string;
}

interface Person {
  name: string;
  address: Address;
}

然后我从外部拿到了这样一个对象:

const obj: any = {
  id: 123,
  name: 'Name Surname',
  address: {
    number: 456,
    street: 'Long street'
}};

我需要把这个obj转换成符合Person接口的personObj,也就是要去掉id以及address.number这些不在接口定义里的属性。

我已经知道,简单的类型断言根本不管用:

const personObj = obj as Person; // 完全不会移除多余属性

这种操作只是给对象加上了TypeScript的类型标注,实际对象的冗余属性依然存在,完全达不到我想要的效果。

之前我都是手动写转换函数来处理:

function convert(obj: any): Person {
  return {
    name: obj.name,
    address: {
      street: obj.address.street
    }
  };
}

但随着应用的增长,对接的API越来越多,需要处理的接口也越来越多,每次都手动写这样的转换函数太繁琐了,所以我想能不能写一个通用函数来解决这个问题。

动机:我的应用会调用API并把响应数据缓存起来,API返回的对象包含很多不必要的属性,为了最小化缓存的数据量,我需要只保留接口中定义的必要属性,剔除掉其他冗余内容。

备注:内容来源于stack exchange,提问作者Leo von Barbarosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:54:34