Búsqueda de sitios web

¿Ignorar ciertas propiedades en una interfaz al crear un objeto en TypeScript?


Tengo una interfaz definida con algunas propiedades. Quiero crear un objeto a partir de esta interfaz, sin embargo, al crearlo no quiero inicializar completamente todas las propiedades mencionadas en la interfaz. Solo quiero inicializar algunas. ¿Cómo puedo lograr eso? Gracias.

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

quiero crear un array de objetos de campaña. esto es lo que estoy tratando de hacer.

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

   ];

sin embargo, obtengo el siguiente error.

El tipo '{ id: string; name: string; }' carece de las siguientes propiedades del tipo 'Campaign': createdOn, lastUpdated, createdBy, type, y 6 más.ts(2740)

Respuesta #1

puedes usar Parcial -

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

   ];

Respuesta #2

si haces que las propiedades opcionales sean anulables, debería funcionar.

ejemplo :

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

Artículos relacionados