Как работает never?
Прочел очень много ресурсов про тип never в TS Habr, Medium, SO.en, SO.ru также посмотрел видео курсы.
Везде говориться одно и тоже что never используется в бесконечном цикле, в функции где есть бесконечный цикл, ошибка или рекурсия.
function error(message: string): never {
throw new Error(message);
}
function infiniteLoop(): never {
while (true) {
}
}
function infiniteRec(): never {
return infiniteRec();
}
В основном везде стандартные тексты. Но я так и не понял, где можно его использовать? Нету рабочего кода где можно потыкать и посмотреть.
Попробовал использовать бесконечный цикл с never как написано и не сработало. Не понял почему? И, что не так?
function infiniteLoop(): never {
while (true) {
console.log("true");
}
}
infiniteLoop(); // Potential infinite loop: exceeded 10001 iterations.
Ответы (2 шт):
Тип never просто помогает typescript понять что функция никогда ничего не вернёт или всегда выбрасывает ошибку. К примеру в таком коде:
const fn = ()=> {
function infiniteLoop(): never {
while (true) {
console.log("true");
}
}
infiniteLoop();
return 's'
}
typescript покажет вам ошибку о недостижимости return 's' благодаря типу never.
Я это понимаю как функция с never не доходит до конца. То есть while не даст дойти к концу и завершить функцию, а throw просто прервет функцию и не даст ей выполнится до конца.