Ответ
StrictNullChecks — это опция компилятора TypeScript, которая включает строгую проверку типов для null и undefined. Без неё TypeScript позволяет неявно присваивать эти значения любому типу, что может привести к ошибкам во время выполнения.
Пример:
// Без strictNullChecks
let name: string = null; // Ошибки нет
// С strictNullChecks
let name: string = null; // Ошибка: Type 'null' is not assignable to type 'string'
Чтобы явно разрешить null или undefined, нужно использовать union-типы:
let name: string | null = null; // Корректно
Преимущества:
- Более безопасный код
- Чёткое указание, где могут быть
null/undefined - Лучшая поддержка опциональных полей (
?)
Ответ 18+ 🔞
А, ну вот это, блядь, интересная тема подъехала! StrictNullChecks, сука! Это такая штука в TypeScript, которая тебе мозги прочищает, как будто тебе в голову заглянули и сказали: "Слушай, дружок, а ты уверен, что тут не null завалился, а?"
Без этой опции TypeScript ведёт себя, как распиздяй последний. Ну то есть, ты пишешь:
// Без strictNullChecks
let name: string = null; // Ошибки нет
И он тебе: "Да похуй, братан, пиши что хочешь, null строке? Да не вопрос, хули там". А потом в рантайме у тебя всё ебётся, и ты сидишь и думаешь: "Ну откуда, сука, undefined вылез, я же объявил строку!". А вылез потому, что компилятор тебя, как лоха, пропустил.
А вот когда ты эту опцию включаешь — ёпта, тут начинается цирк с конями. Тот же самый код:
// С strictNullChecks
let name: string = null; // Ошибка: Type 'null' is not assignable to type 'string'
И компилятор тебе такой: "Э, сабака, сука! Ты куда это? Ты же сказал, что тут будет string, а суёшь null! Иди нахуй, исправляй!". И он прав, блядь!
Чтобы его успокоить, надо честно признаться: "Да, чувак, тут может быть или строка, или null, я не уверен". И пишешь union-тип:
let name: string | null = null; // Корректно
Вот теперь он доволен. "Ага, — говорит, — ну теперь ясно, бывает. Ну окей, проходи".
И преимущества-то какие, блядь, очевидные!
- Код становится безопаснее, как будто в бронежилете ходишь. Меньше шансов, что в продакшене всё накроется медным тазом из-за какого-нибудь неожиданного
undefined. - Ты прямо в коде пишешь, где эта хитрая жопа в виде
nullможет вылезти. Прозрачнее некуда. - И опциональные поля (эти, с вопросительным знаком
?) начинают работать как надо, а не просто для галочки.
Короче, включать обязательно. Иначе потом сидишь и ебёшь мозг, откуда ошибка. А всё потому, что пожалел одну строчку в конфиге. Не будь мудаком, включай strictNullChecks!