Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

176
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda