可以避免这种类型:
(await getCryptocurrencyMap(1, 5)) as Cryptocurrency[]并在getCryptocurrencyMap上返回类型?
完整代码:
type Cryptocurrency = {
id: number
symbol: string
name: string
}
const getCryptocurrencyMap = (start: number, limit: number) =>
new Promise(async (resolve, reject) => {
try {
const response = await axios.get(`${BASE_URL}/v1/cryptocurrency/map`, {
params: { start, limit },
headers: {
'X-CMC_PRO_API_KEY': COINMARKETCAP_APIKEY,
},
})
resolve(response.data.data)
} catch (error) {
reject(error)
}
})
export const getCryptocurrencies = async () => {
const arr = (await getCryptocurrencyMap(1, 5)) as Cryptocurrency[]
return arr.map(({symbol, name}) => ({ [symbol]: name }))
}发布于 2022-02-18 12:10:07
是的-使用仿制药:
new Promise<Cryptocurrency[]>((resolve, reject) => {
// resolve can only be used with `Cryptocurrency[]` now
});但是,new Promise包装器在这里似乎是多余的。只需返回axios响应,这也允许泛型:
const result = await axios.get<Cryptocurrency[]>(url, opts);
const currencies = result.currencies; // data is Cryptocurrency[] 请注意,这是纯类型记录运行时强制转换。它不能保证API的实际返回结果是指定类型的。
https://stackoverflow.com/questions/71173225
复制相似问题