Проверяет понимание оператора non-null assertion (!) в TypeScript и причин, по которым его использование считается плохой практикой.
Оператор ! (восклицательный знак после выражения) в TypeScript называется non-null assertion. Он используется для того, чтобы явно указать компилятору: "Я уверен, что это выражение не равно null или undefined, даже если тип говорит об обратном". Это не меняет поведение кода во время выполнения, а только отключает проверку типов для данного выражения.
function getLength(str: string | null): number {
// Без ! TypeScript выдаст ошибку: Object is possibly 'null'
return str!.length;
}В этом примере str! говорит TypeScript: "Не проверяй, что str может быть null, я знаю, что это строка". Если во время выполнения str окажется null, код упадет с ошибкой.
В редких случаях, когда вы абсолютно уверены в значении, например, при работе с DOM-элементами, которые гарантированно существуют:
const button = document.getElementById('submit')!;
button.addEventListener('click', handleClick);Но даже здесь лучше использовать проверки или утверждения типов.
str?.length — безопасно возвращает undefined, если str null.if (str !== null) { str.length }.str as string — тоже обходит проверки, но более явно.Вывод: Non-null assertion — это инструмент для крайних случаев, когда вы уверены в значении, но его использование должно быть минимальным. В большинстве ситуаций предпочтительнее использовать безопасные альтернативы, чтобы сохранить преимущества строгой типизации TypeScript и избежать ошибок во время выполнения.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию