当前位置: 首页 > 知识库问答 >
问题:

打字稿基于接口从另一个对象创建对象

田博易
2023-03-14

我想从另一个对象创建一个< code>ExampleInterface对象,但只保留< code>ExampleInterface包含的那些属性。

是否可以不手动复制每个密钥?

export interface ExampleInterface {
  property1: string;
  property2: string;
}

然后呢

const exampleObject: ExampleInterface = anotherObjectThatHasMoreProperties;

提前谢谢你。

共有2个答案

壤驷敏学
2023-03-14

一个可能的解决方案是上面的函数:

 function createExampleInterface(sourceObject: ExampleInterface): ExampleInterface 
 {
      const emptyExampleInterface: ExampleInterface = {
        property1: '',
        property2: ''
      };
      const interfaceProperties = Object.keys(emptyExampleInterface);
      const targetObject: ExampleInterface = Object.assign({}, sourceObject) ;

      for (let property of Object.keys(targetObject)) {    
        if (interfaceProperties.indexOf(property) < 0) {      
          delete targetObject[property];
        }
      }
      return targetObject;
 }

使用该函数的示例:

const objA = {
  property1: 'Property 1',
  property2: 'Property 2',
  property3: 'Property 3'
}

const objB: ExampleInterface = createExampleInterface(objA);

console.log(objB);

在https://stackblitz.com/edit/typescript-rjgcjp试试吧

胡博艺
2023-03-14

因此,我认为类可能是一个更好的选择,因为在那里您可以创建一个构造函数,并将另一个对象作为参数,如下所示:

    export class ExampleDomainObject {
        constructor(obj: AnotherObjectThatHasMoreProperties) {
            this.myProp = obj.myProp;
            // here you apply all properties you need from AnotherObjectThatHasMoreProperties
        }

    }

如果有帮助,请告诉我:)

 类似资料:
  • 问题内容: 我正在获取一个json响应并将其存储在mongodb中,但是我不需要的字段也正在进入数据库中,是否仍要剥离unseccary字段? 输出: 问题答案: 您可以使用从给定对象中选取某些属性的函数: 然后:

  • 我试图理解Java8流。我有两门课: 以及: 字段应指示全天的卡路里总量是否为。该字段与当天的所有条目相同。 我试图从

  • 我有两个Java类,Product和ProductReview。ProductReview除了变量long id和String review外,还有一个名为Product的变量,该变量应包含类Product中的一个对象。例子: Products类有私有变量long id、String name和List评论(它也从Product评论类中获取评论)。产品类与Product评论有一对多的关联,反之亦然

  • 我遇到了一些Java代码: 在Java中,我第一次遇到一个构造函数或方法,它的参数是一个接口的“类型”。可以创建接口的对象吗?你能像普通物体一样使用它们吗? 在C语言中,我知道创建抽象类的对象是不可能的。

  • 我对RxJS很陌生,所以如果这个问题已经得到回答,我提前道歉。 我有一个Angular 2应用程序,在其中一个组件中有一个普通对象。我将UI绑定到这个对象。我想做的是能够捕获对这个对象的所有更改,无论它们来自代码还是来自用户更改其中一个字段。 我正在查看可观察对象,但似乎只有通过Emit方法推送新对象时,订阅者才能接收通知。例如,在属性绑定到输入字段的情况下,这将如何工作? 有更好的方法吗? 这是

  • 我定义了这样一个接口: 我这样定义一个变量: 然而,当我尝试设置modal的属性时,它会给我一个消息,说 使用接口来描述模态对象可以吗?如果可以,我应该如何创建它?