МОДУЛЬ 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 вопроса