what is the typescript type of app in vue 3

267 Views Asked by At

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?

2

There are 2 best solutions below

1
On

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 (:

0
On

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;
}