#javascript #reactjs #typescript #react-hooks
Вопрос:
У меня есть этот код
type UserService = {
getUserRole: () => string
}
const auth = useAuth();
const useUserService: UserService = {
getUserRole: () => {
return Axios({
method: "get",
url: "https://<url>",
headers: {
"Authorization": `Bearer ${auth.user.access_token}`
}
}).then((response) => {
return response.data;
}).catch((error) => {
console.log(error);
});
}
}
export default useUserService
Я получаю сообщение об ошибке
Type '() => Promise<any>' is not assignable to type '() => string'.
Type 'Promise<any>' is not assignable to type 'string'
.
Как мне вернуть response
(который является строкой) из Axios?
Комментарии:
1. Вы возвращаете обещание, поэтому вам нужно изменить свой тип с
() => string
на() => Promise<string>
. Чтобы использовать результат обещания (т. Е. возвращаемую строку), вам нужно будет подключиться.then()
к вызову метода, чтобы «извлечь» его:getUserRole().then(role => ... use role...)
(или вместо этого вы можетеawait
использовать возвращенное обещание)