Как вернуть ответ от Axios в машинописном виде?

#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 использовать возвращенное обещание)