TypeScript 中的 !(感叹号)运算符:在访问属性时它有什么作用?
Что такое оператор ! (non-null assertion) в TypeScript?
Всем привет! Я недавно начал изучать TypeScript и наткнулся на странный синтаксис с восклицательным знаком. Встретил такой код:
let name: string | null = getUserName();
console.log(name!.toUpperCase());
Я понимаю, что name может быть string или null. Но что делает этот ! после name? Без него TypeScript ругается: "Object is possibly 'null'". А с ним — всё работает.
Это какой-то оператор? Он изменяет тип? Или это просто способ сказать компилятору "заткнись"? Когда его уместно использовать, а когда это опасно? Я читал про optional chaining (?.), но тут совсем другой синтаксис.
Можете объяснить простыми словами, что делает ! (exclamation mark / bang) при обращении к члену объекта? И чем он отличается от обычного утверждения типа через as?
Спасибо!