Sobes.tech
Назад к вопросам
Middle
3

Знакома ли с non-null assertion оператором (!) в TypeScript? Почему он считается антипаттерном?

Компании, где спрашивали
Электронные офисные системы

Ответ от нейросети

sobes.tech AI

В TypeScript оператор non-null assertion (!) используется для указания компилятору, что выражение не является null или undefined, даже если тип допускает эти значения. Это позволяет избежать ошибок компиляции, связанных с возможным null.

Пример:

let maybeNull: string | null = getValue();
console.log(maybeNull!.length); // утверждаем, что maybeNull не null

Почему это считается антипаттерном:

  • Использование ! отключает проверку безопасности типов, что может привести к ошибкам времени выполнения, если значение всё же окажется null или undefined.
  • Частое применение оператора говорит о недостаточной проработке типов и логики обработки null.
  • Лучше явно проверять значения или использовать безопасные операторы (например, ?.) вместо подавления ошибок.

Таким образом, non-null assertion стоит применять очень осторожно и только когда вы абсолютно уверены, что значение не будет null, иначе это снижает надежность кода.