React:如何解决错误:对象的类型为“未知”?

Wai*_*aiz 7 typescript reactjs

我正在尝试使用 axios 从 API 获取数据,但 response.data 给了我“未知”错误。不知道如何解决这个问题。任何人都可以帮助我。我正在使用打字稿。

这是我收到的错误:

对象的类型为“unknown”.ts(2571)(参数)响应:AxiosResponse<unknown, any>

    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();
  }, []);
Run Code Online (Sandbox Code Playgroud)

在另一个文件中我定义了数据类型:

export interface PokemonItem {
id: number;
name: string;
height: string;
weight: string;
abilities: string;
image: string;
}
Run Code Online (Sandbox Code Playgroud)

Tus*_*ahi 15

response类型unknown为 TS。unknown就像any它可以是任何东西一样,但它是一个更安全的选择。TS 不会让您访问response属性,因为它不知道该对象可能是什么。

您将想尝试这个并将其用作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);
    }
  };


Run Code Online (Sandbox Code Playgroud)