PassFront
  1. PassFront
  2. База знаний
  3. Основы TypeScript

Что такое восклицательный знак в 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

Другие вопросы раздела