Typescript: Тип never (возврат из функции)
В этом уроке познакомимся с типом never.
Использование типа never
Тип never используется, когда функция гарантированно ничего не возвращает. Например, если внутри функции есть бесконечный цикл:
function infiniteLoop(): never {
while (true) {
// Какая-то логика
}
}Мы явно указали, что функция infiniteLoop ничего не возвращает.
Еще тип never используется, если функция выбрасывает исключение:
function stop(message: string): never {
throw new Error(message);
}Также тип never используется, когда функция завершает программу:
function exit(code: number = 0): never {
process.exit(code);
}Важным условием для never является отсутствие нормального завершения функции. Например, в примере ниже компилятор выдаст ошибку:
// A function returning 'never' cannot have a reachable end point.
function printSomething(): never {
console.log('hexlet');
}Функция printSomething() ничего не возвращает явно. Но так как она завершается в принципе, JavaScript подставляет неявный возврат undefined.
never автоматически выводится даже там, где прописан явный возврат. Но компилятор видит, что этот возврат невозможен:
function fail() { // Автоматически выводится never
// функция exit, определенная выше, имеет возвращаемый тип never
return exit(1);
}Задание
Реализуйте функцию fail(), которая выбрасывает любое исключение. Пропишете ее возвращаемый тип явно.
Полезное
Typescript: Тип never (возврат из функции)
В этом уроке познакомимся с типом never.
Использование типа never
Тип never используется, когда функция гарантированно ничего не возвращает. Например, если внутри функции есть бесконечный цикл:
function infiniteLoop(): never {
while (true) {
// Какая-то логика
}
}Мы явно указали, что функция infiniteLoop ничего не возвращает.
Еще тип never используется, если функция выбрасывает исключение:
function stop(message: string): never {
throw new Error(message);
}Также тип never используется, когда функция завершает программу:
function exit(code: number = 0): never {
process.exit(code);
}Важным условием для never является отсутствие нормального завершения функции. Например, в примере ниже компилятор выдаст ошибку:
// A function returning 'never' cannot have a reachable end point.
function printSomething(): never {
console.log('hexlet');
}Функция printSomething() ничего не возвращает явно. Но так как она завершается в принципе, JavaScript подставляет неявный возврат undefined.
never автоматически выводится даже там, где прописан явный возврат. Но компилятор видит, что этот возврат невозможен:
function fail() { // Автоматически выводится never
// функция exit, определенная выше, имеет возвращаемый тип never
return exit(1);
}Задание
Реализуйте функцию fail(), которая выбрасывает любое исключение. Пропишете ее возвращаемый тип явно.
Полезное
Ваше упражнение проверяется по этим тестам
import { expect, test } from 'vitest';
import fail from './index';
test('function', () => {
expect(fail).toThrow();
});Решение учителя откроется через:
20:00
