首页 > 解决方案 > 如何通过删除属性将对象从接口A转换为接口B

问题描述

假设我有两个接口:

interface A {
  a: string;
  b: string;
  x: string;
}

interface B {
  a: string;
  b: string;
}

当我有一个对象实现接口A并且我想删除该属性x(然后该对象实现接口B) - 我如何告诉 TS 我正在尝试做什么?仅delete obj.x;在对象上执行会导致 TS 抱怨,因为xinterface 是必需的A

标签: typescript

解决方案


我就是这样做的。

interface A {
  a: string;
  b: string;
  x: string;
}

interface B {
  a: string;
  b: string;
}

function convertAtoB(a: A) {
  delete (a as any).x;
  return a as B;
}

推荐阅读