Avatar ·

O que significa o operador ! (ponto de exclamação) ao acessar uma propriedade de objeto em TypeScript?

Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com uma construção que não entendi. No código de um colega, vi o uso do ponto de exclamação após uma variável ou antes de acessar uma propriedade de objeto. Por exemplo: ```typescript const userName: string | null = getUserName(); const length = userName!.length; ``` Ou esta variação: ```typescript interface User { name?: string; email?: string; } function getUserEmail(user: User): string { return user.email!; } ``` Eu entendo que `?` significa valor opcional (pode ser undefined ou null). Mas o que `!` faz? É algum operador de acesso forçado? Isso não causará um erro em tempo de execução se o valor for realmente null ou undefined? Tentei pesquisar no Google, mas em todos os lugares falam sobre "non-null assertion operator". Para ser honesto, parece assustador. Vocês podem explicar em palavras simples como isso funciona e quando é seguro usar? Desde já, obrigado pela ajuda!