Operador ! (ponto de exclamação) em TypeScript: o que ele faz ao acessar uma propriedade?
Olá a todos! Recentemente comecei a estudar TypeScript e me deparei com uma sintaxe estranha com ponto de exclamação. Encontrei este código:
```typescript
let name: string | null = getUserName();
console.log(name!.toUpperCase());
```
Eu entendo que `name` pode ser `string` ou `null`. Mas o que esse `!` faz depois de `name`? Sem ele, o TypeScript reclama: "Object is possibly 'null'". Com ele, tudo funciona.
Isso é algum operador? Ele altera o tipo? Ou é apenas uma forma de dizer ao compilador "cala a boca"? Quando é apropriado usá-lo e quando é perigoso? Eu li sobre optional chaining (`?.`), mas aqui a sintaxe é completamente diferente.
Vocês podem explicar em palavras simples o que o `!` (exclamation mark / bang) faz ao acessar um membro de um objeto? E qual a diferença dele para uma afirmação de tipo normal com `as`?
Obrigado!
<<>>
O que é o operador ! (non-null assertion) em TypeScript?
Este é o operador de afirmação de valor não nulo (non-null assertion operator). Ele diz