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
¿Cómo usar el encadenamiento opcional con matriz o funciones?

Estoy tratando de usar el encadenamiento opcional con una matriz en lugar de un objeto, pero no estoy seguro de cómo hacerlo:

Esto es lo que intento hacer myArray.filter(x => x.testKey === myTestKey)?[0] . También intento algo similar con una función:

 let x = {a: () => {}, b: null} console.log(x?b());

Pero está dando un error como ese, así que cómo usarlo con una matriz o una función.

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

0

Tienes que poner un . después de la ? para usar el encadenamiento opcional:

 myArray.filter(x => x.testKey === myTestKey)?.[0]

Enlace del patio de recreo

Usando solo el ? solo hace que el compilador piense que está tratando de usar el operador condicional (y luego arroja un error ya que no ve un : más tarde)

El encadenamiento opcional no es solo una cosa de TypeScript, también es una propuesta terminada en JavaScript simple .

Se puede usar con notación de corchetes como la anterior, pero también se puede usar con acceso a propiedades de notación de puntos:

 const obj = { prop2: { nested2: 'val2' } }; console.log( obj.prop1?.nested1, obj.prop2?.nested2 );

Y con llamadas a funciones:

 const obj = { fn2: () => console.log('fn2 running') }; obj.fn1?.(); obj.fn2?.();

over 4 years ago · Santiago Trujillo Denunciar

0

Acabo de encontrarlo después de buscar un poco en la página de novedades en la documentación oficial .

La forma correcta de hacerlo con una matriz es agregar . despues ?

entonces será como

 myArray.filter(x => x.testKey === myTestKey)?.[0]

Me gustaría arrojar algo más de luz sobre lo que sucede exactamente con mi caso de pregunta anterior.

 myArray.filter(x => x.testKey === myTestKey)?[0]

Transpila a

 const result = myArray.filter(x => x.testKey === myTestKey) ? [0] : ;

Debido a lo cual arroja el error ya que falta algo después: y probablemente no desee que su código se transfiera a esto.

Gracias a la respuesta de Certain Performance, aprendí cosas nuevas sobre TypeScript, especialmente la herramienta https://www.typescriptlang.org/play/index.html .

over 4 years ago · Santiago Trujillo Denunciar

0

ECMA 262 (2020), que estoy probando en Edge Chromium 84, puede ejecutar el operador de encadenamiento opcional sin transpiler de TypeScript:

 // All result are undefined const a = {}; console.log(a?.b); console.log(a?.["b-foo-1"]); console.log(a?.b?.()); // Note that the following statements throw exceptions: a?.(); // TypeError: a is not a function a?.b(); // TypeError: a?.b is not a function

Puede usar: Chrome 80+, Firefox 74+

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