Что такое восклицательный знак в TypeScript?
Основы TypeScript
Восклицательный знак в TypeScript — non-null assertion: оператор говорит компилятору «здесь значение точно не null и не undefined».
const input = document.querySelector('input')!;
input.value = 'Привет'; // без ! была бы ошибка: input может быть nullОпасность
Это обещание, а не проверка: в JavaScript ! удаляется, и если значения нет, код упадёт в рантайме.
const user = users.find((u) => u.id === id)!;
user.name; // TypeError, если пользователь не найденЧем лучше заменить
- явная проверка:
if (!input) throw new Error('Нет input'); - опциональная цепочка:
user?.name - значение по умолчанию:
user?.name ?? 'Гость'
Другое значение !
В классах ! у поля — definite assignment: «поле будет инициализировано, хоть и не в конструкторе»:
class Form { field!: HTMLInputElement }Коротко для собеседования
! — non-null assertion: убирает null/undefined из типа без проверки в рантайме; лучше явная проверка или ?. и ??.
Подробнее: TypeScript — Non-null Assertion Operator