¡Javascript moderno al rescate!
Es posible que esto no tenga una gran posibilidad de ser visto con la larga lista de respuestas, pero ahora se resuelve * a nivel de idioma con la nueva sintaxis de encadenamiento opcional
me.onChange?.(str)
Es tan simple como eso: onChange
solo se llama si existe .
Si onChange
no existe, no sucede nada y la expresión regresa undefined
, por lo que si tiene un valor de retorno que de lo contrario usaría, simplemente puede verificar este valor !== undefined
antes de continuar.
Edge caso advertencia - si onChange
lo hace existe, pero es no una función, se obtiene una TypeError
. Esto es lo que cabría esperar, es lo mismo que tratar de llamar a cualquier no función como función, pero vale la pena señalar explícitamente que el Encadenamiento opcional no hace ninguna magia para que esto desaparezca.
* Bueno, técnicamente hablando Opcional Chaining sigue siendo una propuesta de la etapa 4 TC39, por lo que aún no está en la especificación ECMAScript, pero la etapa 4 significa que está finalizada y su inclusión está esencialmente garantizada, solo está esperando que se envíe una nueva versión. Puede usar la sintaxis en su versión final hoy a través de Babel con la confianza de que no cambiará. ¡Incluso en Typecript!