У меня есть функция foobar (x: string), которая не вернет, если x - пустая строка. В противном случае он вернет другую строку.
Итак, я не могу объявить, что он возвращает «никогда», и если я заявляю, что он возвращает «строку», TS не понимает, что код впоследствии может быть недоступен
(Да, это ужасный дизайн. Нет, я не могу его изменить)
Иногда мне нужно использовать его с пустым x в другой функции, которая в других ветвях возвращает значение . Что-то вроде
function f(n:number)
{
if (n==0) {
foobar("")
}
else
{
return n - 1
}
}
TS жалуется, потому что не все пути возвращают значение. Поэтому я хотел бы сообщить компилятору, что foobar не возвращает (или, что то же самое, код после того, как он недоступен). Придумываю что-то вроде:
function f(n:number)
{
if (n==0) {
foobar("")
/** @notreachable */
}
else
{
return n - 1
}
}
Могу я это сделать? Что еще я могу сделать? Я мог бы вернуть что-то типа never, может быть, но как мне получить никогда не возвращаемое «значение»?