Back to questions
Middle
2
Знакома ли с non-null assertion оператором (!) в TypeScript? Почему он считается антипаттерном?
Companies where asked
Электронные офисные системы
Answer from AI
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, иначе это снижает надежность кода.