我想解决的是res.Code下面的红线问题
下面是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下面都带红线?
代码:
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) }
出现红线的原因是因为:catch
的处理
const res = await loginApi().catch(e => { return Promise.reject()})
你如果走了catch
后不需要走下面了,可以这么处理。
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 });}
在文件 /src/stores/otpInfos.ts 的第 7 行,TypeScript 报出以下错误(但是执行 pnpm dev 运行是没有任何问题的): 如果没有引用 ".pnpm/@vueuse+shared@9.13.0_vue@3.3.4/node_modules/@vueuse/shared",则无法命名 "useOTPInfosStore" 的推断类型。这很可能不可移植。需要类型注
定义如下 使用 出现下面的报错: 为什么在使用typeof的情况下ts对类型判断还是有问题?平常在消费联合类型的时候,都只需要借助typeof就能达到缩小类型范围的目的,但是这里没有效果,我想问下什么时候会出现这种问题? 我知道解决方案: 通过强制的类型断言来告诉ts这是一个函数 通过is关键字来做类型预测 但是不知道什么时候需要这么去解决,只有报错的时候才会尝试这么去解决,恳求大佬解惑。
给定一条数据结构(API数组里面的个数是未知的)如下所示 如何推导出类似这样的类型 即 name 作为key, 如果存在table即为boolean类型,否则为unknown类型 ts的大神们,这个该如何写啊,百度,谷歌都折腾了,还问了gpt也不行,就是值推不出来 我写的是这样的
我想通过TypeScript泛型定义函数返回类型。所以R可以是我将定义的任何东西。 <代码>。。。许诺 错误:(29,9)TS2322:类型“字符串”不可分配给类型“R”。“字符串”可分配给类型“R”的约束,但“R”可以用约束“{}”的不同子类型实例化。
数字(number) 字符串(string) 数组(array) 元组(tuple) 任意值(any) null 和 undefined void never 其中元组、枚举、任意值、void和never类型是 TypeScript 特有的。 元组类型 元组类型用于表示已知元素类型和数量的数组,各类型不必相同。 枚举类型 枚举值默认从 0 开始,往后逐个加 1(递增);也就是说,week 中的 M
下面这个贴图中的告警怎么去除呢,需要怎么修改呢? 代码如下: 问题补充: 实例化后为其赋值时 ts警告:类型实例化过深,且可能无限 PbfLayer这个类中的完整代码如下: