Назад к вопросам
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, иначе это снижает надежность кода.