Поиск по сайту
Ctrl + K
Вопросы по TS

Как можно проверить null и undefined в TypeScript?

В TypeScript часто возникает необходимость проверки значений на null и undefined. Это важно, поскольку в приложениях может быть много сценариев, когда переменные могут не иметь значения или вообще отсутствовать. В этой статье мы рассмотрим несколько методов, которые помогут разработчикам справляться с такими ситуациями.

1. Защитное выражение

Самый простой способ проверить переменные на null и undefined — использовать условные операторы. С помощью таких условных выражений мы можем выполнить определенные действия, если переменная имеет значение null или undefined.

function checkValue(value: string | null | undefined) {
  if (value === null) {
    console.log("Значение равно null");
  } else if (value === undefined) {
    console.log("Значение равно undefined");
  } else {
    console.log(`Значение: ${value}`);
  }
}

checkValue(null);      // Значение равно null
checkValue(undefined); // Значение равно undefined
checkValue("Hello");   // Значение: Hello

2. Оператор ?? (nullish coalescing)

TypeScript поддерживает оператор объединения с null (nullish coalescing operator) ??, который возвращает правый операнд, если левый равен null или undefined. Это удобно для задания значений по умолчанию.

function getDisplayName(name: string | null | undefined) {
  const displayName = name ?? "Гость";
  console.log(displayName);
}

getDisplayName(null);      // Гость
getDisplayName(undefined); // Гость
getDisplayName("Алексей"); // Алексей

3. Оператор ? (optional chaining)

Еще одной полезной техникой является цепочка опциональных свойств (optional chaining). Этот оператор позволяет избежать ошибок, связанных с попытками доступа к свойствам объектов, которые могут быть null или undefined.

interface User {
  name: string;
  age?: number | null;
}

function getUserInfo(user: User | null | undefined) {
  // Если user или user.age равны null или undefined, вернется значение undefined
  const age = user?.age ?? "Возраст неизвестен";
  console.log(`Имя: ${user?.name}, Возраст: ${age}`);
}

getUserInfo(null); // Имя: undefined, Возраст: Возраст неизвестен
getUserInfo({ name: "Алексей" }); // Имя: Алексей, Возраст: Возраст неизвестен
getUserInfo({ name: "Мария", age: 25 }); // Имя: Мария, Возраст: 25

4. Инструменты проверки типов

TypeScript предлагает способ проверки типов, позволяя разделять типы, в том числе с использованием объединенных типов.

function isString(value: any): value is string {
  return typeof value === "string";
}

function handleValue(value: string | null | undefined) {
  if (isString(value)) {
    console.log(`Строка: ${value}`);
  } else {
    console.log("Значение не является строкой или отсутствует");
  }
}

handleValue("Привет");    // Строка: Привет
handleValue(null);        // Значение не является строкой или отсутствует
handleValue(undefined);   // Значение не является строкой или отсутствует

Заключение

Проверка null и undefined в TypeScript — это важная тема, которая помогает избежать ошибок в коде и делает работу с данными более безопасной. Используя инструменты TypeScript, такие как условные операторы, оператор ??, оператор ?, а также проверки типов, вы сможете эффективно управлять значениями и обеспечивать надежность своих приложений. С практикой эти подходы станут естественными для вас при написании кода на TypeScript.