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

237
Vistas
Array tiene elementos posiblemente indefinidos incluso si lo filtro

tengo este codigo:

ingrese la descripción de la imagen aquí

He copiado y pegado una imagen para que pueda ver el tipo que hereda el mecanografiado.

DataStore.query() devuelve undefined o User . Al final, filtro el resultado con .filter(Boolean) para que no quede undefined .

¿Por qué TypeScript todavía lo hereda como (User | undefined)[] mientras que no es posible que algunos elementos no estén undefined ?

Mi expectativa es: let users: User[]

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

0

Typescript no es tan inteligente para detectar lo que realmente está haciendo su predicado para el filtro, ya que puede pasar un predicado arbitrario. Si desea una inferencia de escritura más precisa, puede agregar una protección de tipo en su predicado para ayudar a TS a comprender lo que hace https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates

Por ejemplo,

 let users: (number | undefined)[] = []; // TS will infer `usersFilteredA` to (number | undefined)[] let usersFilteredA = users.filter((user) => user !== undefined); // TS will infer `usersFilteredB` to number[] let usersFilteredB = users.filter((user): user is number => user !== undefined);

Por lo que puedo decir, TS evaluará el tipo de cada elemento de la matriz dentro del alcance de cada predicado y luego anulará el tipo del objeto de la matriz.

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