Не удалось сопоставить данные ответа API с интерфейсом машинописного текста - PullRequest
3 голосов
/ 03 августа 2020

Я использую API, который возвращает список объектов, которые я затем хочу автоматически сопоставить с интерфейсами машинописного текста.

Данные API: https://fakestoreapi.com/products

Раньше я использовал PokemonAPI, который возвращает объект со списком объектов (https://pokeapi.co/). Этот API-интерфейс для сопоставления интерфейсов работает отлично, потому что мой интерфейс PokemonData соответствует ответу api.

Как я могу получить его автоматическое сопоставление, когда ответ API от «fakestoreapi» возвращает список?

export interface Pokemon {
id: number,
title: string,
price: number,
description: string,
category: string,
image: string }

export interface PokemonData {
results: Pokemon[]}


//reducer
case GET_POKEMON:
        return {
            data: action.payload,
            loading: false,
            error: ''
        }
//action
export const getPokemon = (pokemon: string): ThunkAction<void, RootState, null, PokemonAction> => {
return async dispatch => {
    try {
        const res = await fetch('https://fakestoreapi.com/products')

        if (!res.ok) {
            const resData: PokemonError = await res.json()
            throw new Error(resData.message)
        }

        const resData: PokemonData = await res.json()
        dispatch({
            type: GET_POKEMON,
            payload: resData
        })
    }catch(err){
        dispatch({
            type: SET_ERROR,
            payload: err.message
        })
    }
}

}

1 Ответ

2 голосов
/ 03 августа 2020

Ваш resData относится не к типу PokemonData, а к типу Pokemon[].

...