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

Возникла проблема с типизацией. Сам фильтруемый массив объектов '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 шт):

Автор решения: Oliver Patterson

Используя .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); 
→ Ссылка