怎么做高端网站,wordpress吃内存,国家企业信息网官网,WordPress去除官网链接ts axios 指定返回值类型#xff0c;返回数据类型不确定该怎么办 typescript
转到 ts 以来#xff0c;一直有个问题困扰着我#xff0c;就是每次用 axios 获取数据时#xff0c;返回值 res 的类型都不能确定#xff0c;这就导致编辑器一直提示我#xff1a; 原因
原因是…ts axios 指定返回值类型返回数据类型不确定该怎么办 typescript
转到 ts 以来一直有个问题困扰着我就是每次用 axios 获取数据时返回值 res 的类型都不能确定这就导致编辑器一直提示我 原因
原因是它确实不知道这个 diaryApi.detail 返回的 Promise 的内容是什么类型是什么结构所以我们需要给它指定一下。
我项目中是这样使用 axios 的 封装 axios 到一个通用方法在这个方法里处理错误信息 再封装一层这层是基于项目中每个模块的功能进行拆分的比如 日记相关 api用户相关 api
解决
首先要做的是给最原始的返回 Promise 的方法添加返回类型 Promise你需要的类型内容 我的这个项目返回值很规整都是这种类型
{success: boolean, data: Arrayany|any, message: string
}没加之前它的返回值是 Promise?
给它加上类型 这只是加了一个大体的类型现在至少使用 res.data res.success 能正常识别了。 目前它只知道返回值是 {success, data, message} 这种类型的再往下 res.data 里是什么内容它就不知道了这个无法统一因为这个 data 可能是任何内容如果想让返回值里更明确就需要在第二层 diaryApi.ts, userApi.ts 指定明确的返回值。 拿这个 diaryApi.list() 接口为例指定它的返回值类型 res.data: ArrayDiaryEntity这里的 DiaryEntity 是我定义的一个类型其内容如下 现在它就知道返回值 res.data 是 DairyEntity[] 这种类型的数组数据了里面是 DiaryEntity 类型的数据能更进一步的进行代码提示像下面这样它提示 DiaryEntity 里并没有 .weekday 属性 总结
js 和 ts 相比ts 适合大型项目只要把类型写全再写的时候还是非常爽的有非常健全的代码提示确实方便。 但对于小项目所有类型都需要写两遍得不偿失。 可以说 ts 是穿在 js 身上的一层盔甲在上战场的时候用在家里捏蚂蚁不需要 ts甚至用了会更麻烦。