简体   繁体   中英

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 :

在此处输入图像描述

How can I fix this?

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM