Avatar ·

¿Qué significa el operador ! (signo de exclamación) al acceder a una propiedad de objeto en TypeScript?

¡Hola a todos! Empecé a estudiar TypeScript recientemente y me encontré con una construcción que no entiendo. En el código de un colega vi el uso del signo de exclamación después de una variable o antes de acceder a una propiedad de objeto. Por ejemplo: ```typescript const userName: string | null = getUserName(); const length = userName!.length; ``` O esta variante: ```typescript interface User { name?: string; email?: string; } function getUserEmail(user: User): string { return user.email!; } ``` Entiendo que `?` significa valor opcional (puede ser undefined o null). Pero ¿qué hace `!`? ¿Es algún tipo de operador de acceso forzado? ¿No causará un error en tiempo de ejecución si el valor resulta ser null o undefined? Intenté buscar en Google, pero en todas partes escriben sobre "non-null assertion operator". Honestamente, suena un poco aterrador. ¿Pueden explicar en palabras simples cómo funciona y cuándo es seguro usarlo? ¡Gracias de antemano por la ayuda!