Задать вопрос
@Richswitch
junior

TS2345 как обойти ошибку?

Привет!

Есть такой код:
interface PopupInfoObj {
  city?: string,
  image?: string,
  longitude?: number | null,
  latitude?: number | null,
  population?: string,
  state?: string
}
interface State {
  width: number,
  height: number,
  latitude: number,
  longitude: number,
  zoom: number,
  popupInfo?: PopupInfoObj | null | void ;
}

const App: React.FC<Props> = props => {
  const initialState: State = {
    width: 400,
    height: 400,
    latitude: 37.7577,
    longitude: -122.4376,
    zoom: 8,
    popupInfo: {
      longitude: null,
      latitude: null
    },
  }
  const [viewport, setViewport] = useState(initialState)

  const _renderCityMarker = (city: PopupInfoObj, index: number) => {
    return (
      <Marker
        key={`marker-${index}`}
        longitude={city.longitude}
        latitude={city.latitude}
      >
        <CityPin 
           size={20} 
           onClick={() => setViewport({ popupInfo: city })}     <------- ts(2345) текст ошибки ниже
         />
      </Marker>
    )
  }

return (...)


Таким образом когда я пытаюсь добавить новые данные city для объекта popupInfo TS выдает ошибку
5d83173abab68653188577.png

Что делать?
  • Вопрос задан
  • 5357 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Richswitch Автор вопроса
junior
Я успел проклясть всех на свете. Но ошибка была по вине моих кривых рук
setViewport({...viewport, popupInfo: cityObj})
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lnked
Попробуйте
const [viewport, setViewport] = useState<State>(initialState)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы