Для чего нужен тип Never
1️⃣ Как кратко ответить
Тип never в TypeScript используется для обозначения значений, которые никогда не встречаются. Он применяется в функциях, которые никогда не возвращают значение, например, выбрасывают исключение или зацикливаются. Это помогает TypeScript выявлять ошибки в коде и улучшать его безопасность.
2️⃣ Подробное объяснение темы
Тип never в TypeScript — это специальный тип, который представляет значения, которые никогда не встречаются. Он используется в ситуациях, когда функция или выражение не может завершиться успешно и не возвращает никакого значения. Это может быть полезно для улучшения безопасности и надежности кода.
Применение типа never
-
Функции, которые выбрасывают исключения
Когда функция всегда выбрасывает исключение и никогда не возвращает значение, она может быть определена с типом
never. Это позволяет TypeScript понять, что функция не завершится успешно.function throwError(message: string): never { throw new Error(message); // Функция выбрасывает исключение и не возвращает значение }В этом примере функция
throwErrorпринимает строку и выбрасывает исключение. Поскольку она никогда не возвращает значение, ее возвращаемый тип —never. -
Функции, которые зацикливаются
Если функция зацикливается и никогда не завершает выполнение, она также может быть определена с типом
never.function infiniteLoop(): never { while (true) { // Бесконечный цикл, функция никогда не завершится } }Здесь функция
infiniteLoopсодержит бесконечный цикл, поэтому она никогда не завершится и не вернет значение. Ее возвращаемый тип —never. -
Исчерпывающие проверки типов
Тип
neverтакже полезен в исчерпывающих проверках типов, например, в конструкцияхswitch, чтобы гарантировать, что все возможные варианты обработаны.type Shape = 'circle' | 'square'; function getArea(shape: Shape): number { switch (shape) { case 'circle': return Math.PI * 1 * 1; // Площадь круга с радиусом 1 case 'square': return 1 * 1; // Площадь квадрата со стороной 1 default: const _exhaustiveCheck: never = shape; // Проверка на исчерпывающий список вариантов throw new Error(`Unhandled shape: ${shape}`); } }В этом примере
defaultветка никогда не должна быть достигнута, если все возможные значенияShapeобработаны. Еслиshapeимеет тип, отличный отcircleилиsquare, TypeScript выдаст ошибку, так как_exhaustiveCheckне может бытьnever.
Зачем нужен тип never
Тип never помогает разработчикам писать более безопасный и надежный код. Он позволяет TypeScript выявлять ситуации, когда функция не может завершиться успешно, и помогает избежать ошибок, связанных с необработанными случаями. Это особенно полезно в больших кодовых базах, где важно гарантировать, что все возможные варианты обработаны и что функции ведут себя предсказуемо.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться