Búsqueda de sitios web

reactjs - React: ¿Cómo resolver el error: El objeto es de tipo 'desconocido'?


Estoy intentando usar axios para obtener datos de una API, pero response.data me da un error 'desconocido'. No estoy seguro de cómo solucionarlo. ¿Alguien puede ayudarme, por favor? Estoy usando TypeScript.

Este es el error que estoy recibiendo:

El objeto es de tipo 'desconocido'.ts(2571) (parámetro) respuesta: AxiosResponse

    interface Props {
  pokemonItem: PokemonItem[];
  children: React.ReactNode | React.ReactNode[];
}

export const PokemonContainer: React.FC = (props) => {
  const { pokemonItem } = props;
  const { name, height, weight, abilities } = pokemonItem;

  const [hovered, setHovered] = React.useState(false);
  const [imageLoaded, setImageLoaded] = React.useState(false);
  const [pokemon, setPokemon] = React.useState([]);


  const getPokemons = () => {
    try {
      axios
      .get('https:pokeapi.co/api/v2/pokemon')
      .then((response) => {
        setPokemon(response.data.results.map((item) => item.name));
      });
    } catch (error) {
      console.log(error);
    }
  };

  React.useEffect(() => {
    getPokemons();
  }, []);

en otro archivo he definido los tipos de datos:

export interface PokemonItem {
id: number;
name: string;
height: string;
weight: string;
abilities: string;
image: string;
}

Respuesta #1

El tipo response es unknown para TS. unknown es simplemente como any en el sentido de que puede ser cualquier cosa, pero es una opción más segura. TS no te permitirá acceder a las propiedades de response ya que no tiene idea de qué podría ser el objeto.

Querrás probar esto y usarlo como any.

const getPokemons = () => {
    try {
      axios
      .get('https:pokeapi.co/api/v2/pokemon')
      .then((response : any) => { 
       setPokemon(response.data.results.map((item) => item.name));
      });
    } catch (error) {
      console.log(error);
    }
  };


Artículos relacionados