Это немного поздно, но в случае, если другие столкнутся с этой проблемой, проблема в том, что res.redirect
не возвращает значение, поэтому его тип возврата определяется как void
.
Ошибка в том, что оператор return
ожидает значение. Вы не можете вернуть void
. Таким образом, компилятор TypeScript просматривает return res.redirect(303, snapshot.ref.toString());
как return void
, что и вызывает ошибку.
Решение состоит в том, чтобы поместить возврат в следующую строку:
res.redirect(303, snapshot.ref.toString());
return;
К сожалению, несмотря на то, что это недопустимый TypeScript, рекомендуется всегда ставить возврат перед кодом, который завершает ответ, чтобы он не выпадал из остального кода в функции.
Помещение возврата на следующую строку легко забыть, и его легко пропустить при сканировании кода. При возврате с окончанием ответа становится ясно, что обработка завершена.
Вы можете отключить это, отключив правило linting no-void-expression
, но это не рекомендуется, так как в целом это полезное правило.