Почему я вижу ошибку"В типе "City[]" отсутствуют следующие свойства из типа "City""?

Рейтинг: 0Ответов: 1Опубликовано: 27.03.2023

Возникла проблема с типизацией. Сам фильтруемый массив объектов 'cities' имеет тип City[] - соответственно там имеются все перечисленные ключи типа City (текст ошибки после примера с кодом). Мне нужен один объект типа City чтобы задиспатчить его для дальнейшего использования в других компонентах.

Ошибка:

/* const x: City В типе "City[]" отсутствуют следующие свойства из типа "City": title, lat, lng, zoom */

Код:

function LocationItem ({city}: LocationProps): JSX.Element {
      const dispatch = useAppDispatch();
      const x: City = cities.filter((el) => el.title === city); 

Ответы

▲ 1

Используя .filter вы получите массив всех элементов, прошедших условие.
Если вы хотите получить один элемент, воспользуйтесь .find (не забываем, что он вернет null, если ничего не найдет):

function LocationItem ({city}: LocationProps): JSX.Element {
      const dispatch = useAppDispatch();
      const x: City | null = cities.find((el) => el.title === city); 

Если же вам нужно получить массив всех совпадений, то у переменной x должен быть тип City[].

function LocationItem ({city}: LocationProps): JSX.Element {
      const dispatch = useAppDispatch();
      const x: City[] = cities.filter((el) => el.title === city);