0Pricing
TypeScript Academy · Урок

null, undefined и строгая проверка на null

Безопасно обрабатывайте null и undefined в строгом режиме.

«null, undefined и строгая проверка на null» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Добро пожаловать

В JavaScript значения null и undefined часто становятся источниками ошибок во время выполнения. Строгая проверка null в TypeScript заставляет обрабатывать их явно.

null и undefined

`undefined` означает, что переменная объявлена, но ей не присвоено значение. `null` означает намеренное отсутствие значения. В TypeScript это два отдельных типа.
let a: undefined = undefined;
let b: null = null;

Без строгой проверки null

Без `strictNullChecks` значения null и undefined являются подтипами всех типов. Так устроено в старых версиях TypeScript, но такой подход обычно небезопасен.
// strictNullChecks: false (unsafe default)
let name: string = null; // allowed — dangerous!

Включение строгой проверки null

При `strictNullChecks: true` (этот параметр входит в `strict`) значения null и undefined можно присваивать только их собственным типам или явно указанным объединённым типам.
// strictNullChecks: true
let name: string = null; // Error!
let maybeName: string | null = null; // OK

Необязательные свойства

Свойства объектов, помеченные символом `?`, неявно имеют тип `T | undefined`. Необходимо обработать случай, когда такое свойство отсутствует.
interface Config {
  host: string;
  port?: number; // number | undefined
}

const c: Config = { host: 'localhost' };
console.log(c.port?.toString()); // optional chaining

Сужение типов, допускающих null

Используйте проверку if, чтобы сузить объединённый тип с null или undefined перед обращением к свойствам.
function greet(name: string | null): string {
  if (name === null) return 'Guest';
  return 'Hello, ' + name;
}

Необязательная цепочка (?.)

Оператор `?.` возвращает `undefined` без дальнейшего вычисления, если левая часть равна null или undefined, предотвращая сбой во время выполнения.
const user = getUser();
const city = user?.address?.city; // undefined if any step is null

Объединение с null (??)

Оператор `??` возвращает правую часть только тогда, когда левая часть равна null или undefined, в отличие от `||`, который срабатывает при любом ложном значении.
const port = config.port ?? 3000; // 3000 if port is null/undefined
const label = name ?? 'Anonymous';

Оператор утверждения ненулевого значения (!)

Постфиксный оператор `!` сообщает TypeScript, что Вы уверены в отсутствии у значения null или undefined. Используйте его только при полной уверенности.
const el = document.getElementById('root')!;
el.textContent = 'Loaded'; // no null check needed

Возврат null и undefined

Предпочтительно возвращать `null`, чтобы обозначить намеренно пустой результат, а `undefined` — для отсутствующих или необязательных значений. Соблюдайте единообразие в кодовой базе.
function findUser(id: number): User | null {
  return db.find(u => u.id === id) ?? null;
}

strictNullChecks предотвращает ошибку на миллиард долларов

Тони Хоар назвал null «ошибкой на миллиард долларов». strictNullChecks в TypeScript предотвращает сбои из-за null и undefined, заставляя Вас явно обрабатывать эти значения.

Быстрая проверка

Что оператор `??` (объединение с null) возвращает из правой части?

Итоги

Включите strictNullChecks, чтобы предотвратить ошибки, связанные с null и undefined. Используйте объединённые типы для допуска nullable-значений, необязательную цепочку (?.) для безопасного доступа по цепочке и объединение с null (??) для задания значений по умолчанию.

Часто задаваемые вопросы

Урок «null, undefined и строгая проверка на null» бесплатный?

Да — полный текст урока «null, undefined и строгая проверка на null» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «null, undefined и строгая проверка на null»?

Безопасно обрабатывайте null и undefined в строгом режиме. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «null, undefined и строгая проверка на null»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Примитивные типы: string, number, boolean
  2. Тип any и почему его стоит избегать
  3. unknown и any: более безопасный выбор
  4. null, undefined и строгая проверка на null
← Назад к TypeScript Academy