Javascript 安排Axios响应数据以适合我的TypeScript界面
我已经创建了一个名为“ServerData”的接口,它保存一个对象——我从Musixmatch API请求的歌曲数据。 我想用Axios获取一首歌曲,然后将其置于initialState,但由于我不熟悉接口,我不确定如何处理我的响应,使其适合ServerData接口 当我将鼠标悬停在错误上方时,它会显示:Javascript 安排Axios响应数据以适合我的TypeScript界面,javascript,reactjs,typescript,interface,axios,Javascript,Reactjs,Typescript,Interface,Axios,我已经创建了一个名为“ServerData”的接口,它保存一个对象——我从Musixmatch API请求的歌曲数据。 我想用Axios获取一首歌曲,然后将其置于initialState,但由于我不熟悉接口,我不确定如何处理我的响应,使其适合ServerData接口 当我将鼠标悬停在错误上方时,它会显示: 类型“{randomSong:object;}”不能分配给类型“never” 如果相关的话,在我将TypeScript添加到项目之前,Axios fetch工作正常,我的前端能够获取歌曲数据,
类型“{randomSong:object;}”不能分配给类型“never”
如果相关的话,在我将TypeScript添加到项目之前,Axios fetch工作正常,我的前端能够获取歌曲数据,只是那时我没有使用接口,所以没有问题
根据您收到的错误消息,问题不在于axios响应的类型,而在于
setInitialState的类型。它告诉您,setInitialState
只能接受空数组(never[]
)
我猜setInitialState
来自useState
钩子?在调用useState
时,您并不总是需要设置泛型,因为有时可以从初始值正确推断泛型,但在这种情况下,您可以这样做。当初始数组为空时,Typescript不可能知道数组中允许包含哪些类型的元素。你必须说出来
更改您的useState
调用以包括以下泛型:
const [initialState, setInitialState] = useState<ServerData[]>([]);
const[initialState,setInitialState]=useState([]);