$ sudo teach IT
МОДУЛЬ 2 · УРОК 6

Тип void и never

void и never — это специальные типы, которые описывают отсутствие значения. Разберёмся, чем они отличаются и когда используются.

⏱ ~20 минут 🎓 Типы

📭 void — ничего не возвращает

Тип void означает, что функция ничего не возвращает. Это как пустой конверт — он пришёл, но ничего не содержит.

function logMessage(message: string): void {
  console.log(message);
  // Нет return — функция ничего не возвращает
}

const result = logMessage("Привет");
console.log(result); // undefined — void не возвращает значения

void используется, когда функция выполняет действие (выводит в консоль, записывает в файл), но не возвращает значение.

💡 Аналогия: void — это как отправить письмо без ответа. Вы отправили сообщение, но никто не ответил.

⚖️ void vs undefined

void и undefined похожи, но имеют важное отличие:

// void — функция не должна возвращать значение
function doSomething(): void {
  console.log("Действие");
}

// undefined — функция явно возвращает undefined
function returnsUndefined(): undefined {
  return undefined;
}

// Можно присвоить void-функцию переменной undefined
const fn: () => void = doSomething;

// Но нельзя использовать void как значение
const v: void = doSomething(); // OK
// v.toString(); // Ошибка: void не имеет методов

🚫 never — никогда не завершается

Тип never означает, что функция никогда не завершаетсянормальныйно — либо выбрасывает ошибку, либо зацикливается.

// Функция выбрасывает ошибку
function throwError(message: string): never {
  throw new Error(message);
}

// Бесконечный цикл
function infiniteLoop(): never {
  while (true) {
    // бесконечный цикл
  }
}

// never используется для исключений
function process(value: string | number): string {
  if (typeof value === "string") {
    return value.toUpperCase();
  } else if (typeof value === "number") {
    return value.toFixed(2);
  } else {
    // Здесь тип value — never, потому что все варианты исчерпаны
    const exhaustive: never = value;
    return exhaustive;
  }
}

📊 void vs never — разница

  • void — функция завершается, но ничего не возвращает
  • never — функция никогда не завершается (ошибка, бесконечность)
  • undefined — функция завершается и возвращает undefined

  void     → завершается, ничего не возвращает
  never    → НЕ завершается (ошибка / цикл)
  undefined → завершается, возвращает undefined

✅ Итоги урока

  • void — функция ничего не возвращает
  • never — функция никогда не завершается
  • void отличается от undefined
  • never используется для ошибок и бесконечных циклов

Тест: Тип void и never

4 вопроса

Логирование с void

Premium

Функция с never

Premium