логотип PurpleSchool
логотип PurpleSchool

Null и Undefined в TypeScript

Автор

Дмитрий Нечаев

Введение

В JavaScript есть два примитивных значения, используемых для сигнализации об отсутствии или неинициализированном значении: null и undefined.

В TypeScript есть два соответствующих типа с такими же именами. Поведение этих типов зависит от того, включена ли у вас опция strictNullChecks.

Выключенный strictNullChecks

При отключенной strictNullChecks, к значениям, которые могут быть нулевыми или неопределенными, по-прежнему можно обращаться нормально, а значения null и undefined могут быть присвоены свойству любого типа. Это похоже на то, как ведут себя языки без проверки нуля (например, C#, Java). Отсутствие проверки этих значений, как правило, является основным источником ошибок; мы всегда рекомендуем включать strictNullChecks, если это целесообразно в их кодовой базе.

Включенный strictNullChecks

При включенной strictNullChecks, когда значение является null или undefined, вам нужно будет проверить наличие этих значений, прежде чем использовать методы или свойства для этого значения. Точно так же, как проверка на неопределенность перед использованием необязательного свойства, мы можем использовать сужение для проверки значений, которые могут быть null:

function doSomething(x: string | null) {
  if (x === null) {
    // ничего не делай
  } else {
    console.log("Привет, " + x.toUpperCase());
  }
}

Оператор утверждения non-null (Postfix !)

В TypeScript также есть специальный синтаксис для удаления null и undefined из типа без явной проверки. Запись ! после любого выражения фактически является утверждением типа, что значение не является null или undefined:

function liveDangerously(x?: number | null) {
  // Нет ошибки
  console.log(x!.toFixed());
}

Как и другие утверждения типа, это не меняет поведение вашего кода во время выполнения, поэтому важно использовать ! только тогда, когда вы знаете, что значение не может быть null или undefined.

Стрелочка влевоSymbols в TypeScriptСужение типов (Narrowing) в TypeScriptСтрелочка вправо

Постройте личный план изучения Typescript до уровня Middle — бесплатно!

Typescript — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Typescript

Открыть базу знаний

Лучшие курсы по теме

изображение курса

TypeScript с нуля

Антон Ларичев
иконка часов21 бесплатный урок
иконка звёздочки рейтинга4.7
Backend
Frontend
Mobile
изображение курса

CSS Flexbox

Антон Ларичев
иконка часов28 бесплатных уроков
иконка звёздочки рейтинга4.9
Frontend
изображение курса

Next.js - с нуля

Антон Ларичев
иконка часов23 бесплатных урока
иконка звёздочки рейтинга4.7
Frontend