Devs Hive
Повернутися до всіх запитань

Що таке never в TypeScript?

Junior/Middle/SeniorTypeScript
Зустрічали на інтервʼю:1 користувач

Простими словами, never означає те що ніколи не станеться. Скоріше за все, ви зараз подумали про тип void і задались запитанням, яка між ними різниця?

Якщо розглянути ці типи з точки зору функцій, то технічно void все таки повертає значення, бо в JavaScript навіть при відсутності return, неявно повертається undefined. Тоді як тип never означає те, що виконання ніколи не дійде до return.

Розберемо глибше

Гарний приклад реального використання never це Nest.js і його обгортки над обʼєктом Error, які додають трохи цукру в обробку помилок. Код в середині цих функцій, ніколи не дійде до ключового слова return, так як вони завжди завершуються з помилкою.

// виконання коду в функціях, ніколи не дійде до return тому тип завжди буде never

throw new NotFoundException();
throw new ForbiddenException();
throw new UnauthorizedException();

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

Ще один приклад never це цикл, який ніколи не завершиться. В функції infiniteLoop виконання коду, ніколи не дійде до return тому тип також буде never.

function infiniteLoop(): never {
while (true) {}
}

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!