网站搜索

在 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: string; name: string; }' 缺少类型 'Campaign' 的以下属性:createdOn、lastUpdated、createdBy、type,以及另外 6 个.ts(2740)

答案#1

你可以使用部分 -

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

   ];

答案#2

如果你将可选属性设为可空,它应该可以工作。

示例:

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" };

相关文章