Проблема с типом асинхронной функции Promise<faceProductList[] | строка>

Почему я получаю ошибку при использовании типа Promise . к асинхронным функциям. ошибаться В функции отсутствует конечный оператор возврата, а тип возвращаемого значения не включает «неопределенный».

import { faceProductList } from "../../Type/Interface";

class Server {
  private url: string = "https://...../";

  public async request(id: string): Promise<object | string> {
    try {
      const res = await fetch(`${this.url}${id}`);
      if (!res.ok) {
        throw Error("Page Not Found 404");
      }
      const resArr: object = await res.json();
      return resArr;
    } catch (error) {
      return error.message;
    }
  }

  public async handler(
    pathname: string,
    valueSearch: string
  ): Promise<faceProductList[] | string> {
    try {
      const prodObj = await this.request(pathname);
      if (typeof prodObj === "string") {
        throw Error(prodObj);
      } else if (valueSearch) {
        return Object.values(prodObj)
          .flat()
          .filter(({ title }) => title.includes(valueSearch));
      }
    } catch (error) {
      return error;
    }
  }
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В случае, если prodObj не типа string и valueSearch ложно (например, пустая строка) - функция неявно возвращает undefined. Вы должны решить, что делать (вернуться) в этом случае.

if (typeof prodObj === "string") {
    throw Error(prodObj);
} else if (valueSearch) {
    return Object.values(prodObj)
        .flat()
        .filter(({ title }) => title.includes(valueSearch));
}
// undefined returned here implicitly

A function without a return statement will return a default value. In the case of a constructor called with the new keyword, the default value is the value of its this parameter. For all other functions, the default return value is undefined.

Другие вопросы по теме