Me pregunto si la presencia del segundo encadenamiento opcional tiene algún impacto negativo:
let flag = somePotentialNullObj?.someNumProp > 0 && somePotentialNullObj?.someOtherProp;El segundo encadenamiento opcional no es necesario, funciona exactamente igual:
let flag = somePotentialNullObj?.someNumProp > 0 && somePotentialNullObj.someOtherProp; Si se obtiene después de &&, somePotentialNullObj no puede ser nulo o indefinido, no deberíamos tener que verificar nuevamente con ? , ¿Correcto?
Acuerde con el OP que se necesita un encadenamiento opcional en la mitad derecha de la expresión.
Si falta someProp , ¿el primero ?. omite la comparación y se evalúa como indefinido. Eso cortocircuita el && . Si llegamos a la segunda mitad de la expresión && , debemos haber encontrado someProp .
No sé cómo el intérprete optimiza cualquiera de las propuestas de OP. En la superficie, la segunda propuesta haría menos cálculos en promedio.