Posiblemente undefined
'maybe.a' is possibly 'undefined'.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
Se usó una propiedad opcional sin comprobarla. Bajo `strictNullChecks`, «opcional» significa que la ausencia forma parte del tipo y hay que gestionarla.
Reproducción
declare const maybe: { a?: { b: number } } maybe.a.b
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
Sin `strictNullChecks` esto compila y revienta en tiempo de ejecución; con él, el hueco se hace visible donde todavía puede arreglarse. El error no te pide demostrar que el valor existe — te pide decir qué debe pasar cuando no existe, una pregunta que el código respondía en silencio con «fallar».
Arreglos
- 01
declare const maybe: { a?: { b: number } } const value = maybe.a?.b
El encadenamiento opcional responde «no pasa nada, el resultado es `undefined`» — lo cual es correcto cuando quien llama puede vivir con eso.
- 02
declare const maybe: { a?: { b: number } } if (maybe.a) { const value = maybe.a.b }
Una guarda responde «en ese caso no hacemos nada», y acota el tipo para todo el bloque en vez de para un solo acceso.
Conclusión
La aserción no-nula `!` también silencia esto, y es el único arreglo que responde la pregunta con una promesa en vez de con código. Resérvala para los casos que de verdad puedas demostrar.