Можно ли использовать Never в Switch Case

«Можно ли использовать Never в Switch Case» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно использовать never в switch-case для обработки ситуаций, когда все возможные варианты уже учтены, но нужно явно указать, что другие случаи невозможны. Это полезно для exhaustiveness checking (проверки полноты покрытия вариантов).

type Shape = 'circle' | 'square' | 'triangle';

function getArea(shape: Shape): number {
  switch (shape) {
    case 'circle':
      return Math.PI * 10 ** 2;
    case 'square':
      return 10 * 10;
    case 'triangle':
      return (10 * 10) / 2;
    default:
      const _exhaustiveCheck: never = shape;
      return _exhaustiveCheck;
  }
}

Если добавить новый вариант в Shape, TypeScript выдаст ошибку в default, так как shape перестанет быть never. Это помогает выявлять необработанные случаи на этапе компиляции.