Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

172
Vistas
No se pueden enviar elementos a la Colección de interfaz en Typescript

Tengo dos interfaces como a continuación:

 export interface ICard { cardNumber:string; cardAddress: string; city: string; } export interface IStudent { cards: ICard[]; name:string; }

En mi archivo mecanografiado (.ts), he inicializado a continuación en mi clase

 private student: IStudent = <IStudent>{}; // Initializing my interface; private cardDetails: ICard[]; // Unable to use the same initialization like above

En mi función, a continuación, estaba tratando de agregar varias tarjetas a mi cardDetails y asignando cardDetails a mi interfaz IStudent.

 loadStudentCards() { var card: ICard = <ICard>{}// Initializing here. card.cardNumber = "12345"; card.cardAddress = "Some address"; card.city = "Seattle"; this.cardDetails.push(card); // This is the place i am seeing error "Cannot read property 'push' of undefined" this.student.cards = this.cardDetails; }

Este es el lugar donde veo el error "No se puede leer la propiedad 'empujar' de indefinido"

Esta podría ser una pregunta simple, pero no estoy seguro de cómo inicializar el objeto de matriz de interfaz aquí. ¿Puede alguien lanzar una pista aquí?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Eso es porque no ha asignado ningún valor a cardDetails .
Debería ser:

 var cardDetails: ICard[] = [];

Además, puede usar la otra forma de aserción de tipo (casting):

 var student: IStudent = {} as IStudent;

Lo último, no puede usar var (o let / const ) al definir miembros de la clase, debería ser:

 class MyClass { private cardDetails: ICard[] = []; ... }

No estoy seguro si es una parte real de su código o si acaba de publicar un ejemplo.

over 4 years ago · Santiago Trujillo Denunciar

0

Use el siguiente código que es mucho más legible y también es la mejor práctica

 loadStudentCards() { let card: ICard = { cardNumber : "12345", cardAddress : "Some address", city : "Seattle" } this.cardDetails= new Array<ICard>(); this.cardDetails.push(card); this.student.cards = this.cardDetails; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda