'what is the typescript type of app in vue 3

I am using Vue 3 and vue-auth together.

For vue-auth, my project needs to create http/index.ts, containing:

import axios from 'axios';

axios.defaults.baseURL = process.env.VUE_APP_API_URL;

export default (app) => {
    app.axios = axios;
    app.$http = axios;

    app.config.globalProperties.axios = axios;
    app.config.globalProperties.$http = axios;
}

but here I have a type error for app:

enter image description here

How can I fix this?



Solution 1:[1]

app here would be an application instance, which the vue package exports as App. And if you want to attach axios and $http to the application instance, you'd have to use an any-type assertion.

               ?
import type { App } from 'vue';
import axios from 'axios';

axios.defaults.baseURL = process.env.VUE_APP_API_URL;
                      ?
export default (app: App) => {
    (app as any).axios = axios;
    (app as any).$http = axios;

    app.config.globalProperties.axios = axios;
    app.config.globalProperties.$http = axios;
}

Solution 2:[2]

This is not exactly an error, but rather a warning that if you don't define a type, the parameter will have the type: any. In that case, the IDE just advises you to use any, or whatever type you want

export default (app: any) => {
    app.axios = axios;
    app.$http = axios;

    app.config.globalProperties.axios = axios;
    app.config.globalProperties.$http = axios;
}

Is possible to disable this warning adding "noImplicitAny": false at your tsconfig.json if you want (:

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 tony19
Solution 2