Я пытаюсь выдать ошибку, если код состояния ошибки отличается от 401, однако, как только я заключил строку кода, которая выдает ошибку, мой машинописный текст начал выдавать мне следующую ошибку:
Function lacks ending return statement and return type does not include 'undefined'.
Моя функция выглядит так:
export const addAccountGoal = async (title: string, color: string): Promise<number> => {
try {
const { body: goalId } = await request.post('/goals/account/addGoal').send({ title, color });
await setActiveGoal(goalId);
return goalId;
} catch (e) {
if (e.status !== 401) {
throw new Error('GENERIC_ERROR');
}
}
};
Как только я удаляю оператор if в блоке catch, я перестаю получать эту ошибку.
@RobertHarvey Я новичок в Typescript, поэтому мой вопрос в том, как избежать этой ошибки. Я предполагаю, что мой блок catch потенциально ничего не возвращает, но как мне изменить свою функцию, чтобы разрешить блоку catch ничего не возвращать, если код состояния равен 401?
Он жалуется, что вы никак не обрабатываете ошибку, если статус не 401
@kellys Я не хочу обрабатывать ошибку, если это 401



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Чтобы немного аннотировать вашу функцию:
export const addAccountGoal = async (title: string, color: string): Promise<number> => {
try {
const { body: goalId } = await request.post('/goals/account/addGoal').send({ title, color });
await setActiveGoal(goalId);
return goalId;
} catch (e) {
if (e.status !== 401) {
throw new Error('GENERIC_ERROR');
} else {
// WHAT SHOULD I DO HERE
}
}
};
Ваша проблема в том, что вы ничего не сказали TypeScript о том, «что мне здесь делать», поэтому выполнение продолжается до конца функции, где вы ничего не возвращаете. Следовательно, сообщение об ошибке: «Функции не хватает конечного оператора возврата, а тип возвращаемого значения не включает« неопределенный »».
В зависимости от конкретной логики, которую вы хотите:
return undefined; и изменить тип возвращаемого значения функции на Promise<number | undefined>.throw e;).return 0;).(Значок else {, который я добавил, просто для пояснения; вам не нужно писать свой код таким образом, если вы этого не хотите.)
Сообщение об ошибке кажется довольно понятным. Что конкретно вас смущает?