我尝试使用axios从API获取数据,但是www.example.com给我一个"未知"错误。不知道如何修复这个错误。任何人都可以帮助我。我使用的是Typescript。response.data gives me 'unknown' error. Not sure how to fix this. Anyone can help me please. I'm using Typescript.
这是我得到的错误:
对象的类型为"unknown"。ts(2571)(参数)响应:Axios缓解〈未知,任何〉
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();
}, []);
在另一个文件中,我定义了数据类型:
export interface PokemonItem {
id: number;
name: string;
height: string;
weight: string;
abilities: string;
image: string;
}
3条答案
按热度按时间pxy2qtax1#
response
类型是TS的unknown
。unknown
与any
的相似之处在于它可以是任何对象,但更安全。TS不允许您访问response
属性,因为它不知道对象可能是什么。您会想尝试一下并将其用作
any
。jljoyd4f2#
我在使用Fetch时遇到了同样的问题,我解决它的方法是:为“未知”类型的“错误”创建一个新类型。
nuypyhwy3#
如果您仍然需要Axios解决方案而不需要关闭TypeScript,请选择:
AxiosError
类型是一个泛型类型,它接受预期的错误响应接口。当然,接口应该符合你期望的错误格式。在我的例子中,我总是收到一个错误数组,但我只对第一个错误感兴趣。然后我添加了一个后备错误,以防收到的错误与形状不匹配,例如网络错误。