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

如何从TypeScript子接口实例中仅获取父接口属性?

只保留父接口属性的解决方法

TypeScript的类型约束仅在编译阶段生效,运行时变量本质还是完整的JavaScript对象,所以直接赋值不会自动剔除多余属性。要拿到仅包含父接口A属性的对象,有几种实用做法:

  • 手动提取指定属性:直接取出A定义的属性生成新对象
interface A {
    a:string;
}

interface B extends A{
    b:string;
}

const b:B = {
    a:'a',
    b:'b'
}

const a:A = { a: b.a };
console.log(a); // 输出 { a: 'a' }
  • 封装通用提取函数:如果需要复用逻辑,可以写一个通用函数提取目标类型的属性
function pick<T>(obj: any, keys: (keyof T)[]): T {
    const result = {} as T;
    keys.forEach(key => {
        if (obj.hasOwnProperty(key)) {
            result[key] = obj[key];
        }
    });
    return result;
}

// 使用示例
const a:A = pick<A>(b, ['a']);
console.log(a); // 输出 { a: 'a' }
  • 解构赋值简化操作:用解构语法直接剥离不需要的属性
// 将不需要的b属性重命名为_避免冲突,剩余部分就是A的属性
const { b: _, ...a } = b;
console.log(a); // 输出 { a: 'a' }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:15:56