En el proyecto mecanografiado de axios, los tipos estándar se definen según la interfaz de la empresa.

El interceptor de respuesta de request.ts devuelve respuesta.data (esto se determina de acuerdo con la interfaz de la empresa. Al usarlo, puede obtener el valor del resultado directamente usando respuesta.datos. Si devuelve la respuesta directamente, debe usar respuesta .datos...datos)

axios.d.ts

import 'axios'

declare module 'axios' {
    
    

    // 所有的返回值
    interface AxiosDataResult<T>{
    
    
        code: number;
        msg: string;
        data:T
    }

    type AxiosPromiseData<T = any> = Promise<AxiosDataResult<T>>;

}

login.ts (interfaz API)

import request from '@/utils/request'
import type {
    
    AxiosPromiseData} from 'axios'

// 登录
interface Data{
    
    
  account: string; 
  password: string
}

//这里我的data直接就是token字符串
export function api_login(data:Data):AxiosPromiseData<string> {
    
    
  return request({
    
    
    url: '/login',
    method: 'post',
    data
  })
}

Utilizado en el archivo login.vue

  api_login(form.value)
    .then(async (res) => {
    
    
      saveToken(res.data)
      await getUserInfo()

      loading.value = false
      setTimeout(() => {
    
    
        router.push('/work/index')
      }, 200)
    })
    .catch(() => {
    
    
      loading.value = false
    })

Supongo que te gusta

Origin blog.csdn.net/weixin_35958891/article/details/130804469
Recomendado
Clasificación