typescript类型的问题?

作者站长头像
站长
· 阅读数 5

我想解决的是res.Code下面的红线问题typescript类型的问题?下面是loginApi接口的类型定义:

export const loginApi = (data: UserType): Promise<IResponse<UserType>> => {
  return request.post({ url: '/BackLogin/Login', data })
}

其中UserType类型的定义:

export type UserType = {
  userNo: string
  password: string
  role: string
  roleId: string
  permissions: string | string[]
}

IResponse类型的定义:

 declare interface IResponse<T = any> {
    Code: string|int
    Data: T extends any ? T : T & any
    Msg:string|any
  }

为什么Promise的返回值Code,Data,Msg下面都带红线?typescript类型的问题?

代码:

  const res = await loginApi(data).catch(e=>{
        loading.value=false
      })
      if (res.Code===0) {
        wsCache.set(appStore.getUserInfo, res.Data)
        // 是否使用动态路由
        if (appStore.getDynamicRouter) {
          console.log("动态路由")
        } else {
         
        }
      }else{
        ElMessage.error(res.Msg)
      }
回复
1个回答
avatar
test
2024-06-23
  const res = await loginApi(data).catch(e=>{
        loading.value=false
      }) as IResponse<UserType>;
      if (res && res.Code===0) {
        wsCache.set(appStore.getUserInfo, res.Data)
        // 是否使用动态路由
        if (appStore.getDynamicRouter) {
          console.log("动态路由")
        } else {
         
        }
      }else{
        ElMessage.error(res.Msg)
      }

但看loginApi的类型声明,是没什么问题的,建议为request.post添加类型声明。

export const loginApi = (data: UserType): Promise<IResponse<UserType>> => {
  return request.post<UserType>({ url: '/BackLogin/Login', data });
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容