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

99
Vistas
Tipo de diferentes interfaces

i esas interfaces:

 export interface EventCollectorData { eventType: EventCollectorType; } export interface ClickEventCollectorData extends EventCollectorData { elementData: EventCollectorElementLocator; eventType: EventCollectorType.CLICK; } export interface NetworkEventCollectorData extends EventCollectorData { eventType: EventCollectorType.REQUEST; requestData: { method: NetworkMethod; url: string; headers: Object; body: { json: Object | null; text: string | null; formData: any; }; }; } export type EventCollectorDataType = ClickEventCollectorData | NetworkEventCollectorData;

Cuando quiero usar EventCollectorDataType y verificar si elementData o requestData , recibo este error:

La propiedad 'elementData' no existe en el tipo 'EventCollectorDataType'. La propiedad 'elementData' no existe en el tipo 'NetworkEventCollectorData'.

Aquí hay un ejemplo para la función que quiero hacer esta verificación:

 const check = (eventCollector: EventCollectorDataType) { if (eventCollector.elementData) { } else if (eventCollector.requestData) { } }

¿Cómo puedo implementar algo así?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe reducir el tipo con el que está tratando antes de acceder a las propiedades que solo existen en una parte de la unión. Por la forma en que configuró las cosas, la propiedad eventType es perfecta para esto (forma una unión discriminada ), por lo que recomiendo lo siguiente:

 const check = (eventCollector: EventCollectorDataType) { if (eventCollector.eventType === EventCollectorType.CLICK) { // do stuff with eventCollector.elementData } else if (eventCollector.eventType === EventCollectorType.REQUEST) { // do stuff with eventCollector.requestData } }

Una forma alternativa de reducirlo sería así:

 if ('elementData' in eventCollector) { } else if ('requestData' in eventCollector) { }
about 4 years ago · Juan Pablo Isaza 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