Ignorera vissa egenskaper i ett gränssnitt när du skapar ett objekt i TypeScript?


Jag har ett gränssnitt definierat med några egenskaper. Jag vill skapa ett objekt från detta gränssnitt, men när jag skapar det vill jag inte fullständigt initiera alla egenskaper som nämns i gränssnittet. Jag vill bara initiera några. Hur kan jag uppnå det? Tack.

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

Jag vill skapa en array av kampanjobjekt. Det här är vad jag försöker göra.

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

   ];

men jag får följande fel.

Typen '{ id: string; name: string; }' saknar följande egenskaper från typen 'Campaign': createdOn, lastUpdated, createdBy, type och 6 till.ts(2740)

Svar #1

du kan använda Partial -

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

   ];

Svar #2

om du gör de valfria egenskaperna nullable borde det fungera.

exempel :

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

Relaterade artiklar