TS18048
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.

