在打字稿中创建对象时忽略接口中的某些属性?

时间:2019-04-16 11:09:50

标签: typescript

我有一些属性定义的接口。我想从此接口创建一个对象,但是在创建时我不想完全初始化该接口中提到的所有属性。我只想初始化几个。我该如何实现?谢谢。

export interface Campaign {
  id: string;
  name: string;
  createdOn: string;
  lastUpdated: string;
  createdBy: User;
  type: CampaignType;
  status: CampaignStatus;
  startDate: string;
  endDate: string;
  budget: number;
  description: string;
  account: Account;
}

我想创建一系列广告系列对象。 这就是我想要做的。

let campaigns: Campaign[] = [
    {  id:"1",
       name: "test campaign"
      }

   ];

但是我遇到以下错误。

键入'{id:字符串;名称:字符串; }”缺少“广告系列”类型的以下属性:createdOn,lastUpdated,createdBy,type和6个以上。ts(2740)

3 个答案:

答案 0 :(得分:1)

如果将可选属性设置为可空,则它应该起作用。

示例:

type User = {
  firstName: string;
  lastName?: string;
};

// We can assign a string to the "lastName" property
let john: User = { firstName: "John", lastName: "Doe" };

// ... or we can explicitly assign the value undefined
let jane: User = { firstName: "Jane", lastName: undefined };

// ... or we can not define the property at all
let jake: User = { firstName: "Jake" };

答案 1 :(得分:1)

您可以使用Partial-

let campaigns: Partial<Campaign>[] = [
    {  id:"1",
       name: "test campaign"
      }

   ];

答案 2 :(得分:1)

您可以通过执行{ propName?: propType }

将不想在创建时设置值的属性标记为可选。

或者如果要将所有属性标记为可选,则可以使用Partial

Partial<{
  prop1: string,
  prop2: number,
}>