PassFront
  1. PassFront
  2. База знаний
  3. Базовые типы

Для чего используется never в TypeScript?

Базовые типы

`never` — тип значения, которого не может существовать. Его используют для невозможных веток и функций, которые никогда не завершаются нормально.

Функции, которые не возвращают управление

function fail(message: string): never {
  throw new Error(message);
}

Проверка полноты switch

type Shape = { kind: 'circle'; r: number } | { kind: 'square'; a: number };

function area(shape: Shape) {
  switch (shape.kind) {
    case 'circle': return Math.PI * shape.r ** 2;
    case 'square': return shape.a ** 2;
    default: {
      const check: never = shape; // ошибка, если добавят новый вариант
      return check;
    }
  }
}

В условных типах

never «исчезает» из объединений, поэтому через него фильтруют типы:

type NonNull<T> = T extends null | undefined ? never : T;

Коротко для собеседования

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

Подробнее: TypeScript Handbook — never

Другие вопросы раздела