位置: IT常识 - 正文

TS中快速定义一个对象数组以及处理async await的异常(ts中如何定义一个数组)

编辑:rootadmin
TS中快速定义一个对象数组以及处理async await的异常

推荐整理分享TS中快速定义一个对象数组以及处理async await的异常(ts中如何定义一个数组),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:ts中的keyof,ts中的typeof,ts自定义类型,ts中如何定义一个数组,ts怎么设置快捷键,ts自定义类型,ts中如何定义一个数组,ts中declare,内容如对您有帮助,希望把文章链接给更多的朋友!

定义一个对象数组(即数组成员为对象,对象的属性为我们所约束)

方法一:接口字面量形式

export type Resource= {_id: string,personID: { _id: string age: string identifier: string name: string nation: string grade: string schemeNum: string organ: string sex: string}gaintestPoint:stringlooktestPoint:string[]viocetsetPoint:stringgameReview:stringAddvice:string }export type ResourceArray =Resource[]

 方法二:数组泛型字面量形式

export type ReArray=Array<{_id: string,personID: { _id: string age: string identifier: string name: string nation: string grade: string schemeNum: string organ: string sex: string}gaintestPoint:stringlooktestPoint:string[]viocetsetPoint:stringgameReview:stringAddvice:string }>

或者你也可以这么写

索引签名的方式不能被推断为一个数组,因此不能用来约束数据

这是一种比较常见的约束数据的接口定义

// * 请求响应参数(不包含data)export interface Result {resp_code: string;msg: string;status_code: 200}// * 请求响应参数(包含data)export interface ResultData<T = any> extends Result {data: T;}TS中快速定义一个对象数组以及处理async await的异常(ts中如何定义一个数组)

 接下来我们请求数据可能会这样写,这是一种严格的数据约束,包括定义响应式数组push接口数据,如果这里没有传入泛型则会报错

let result = reactive<ReArray>([])const getResult = async () => { const { data } = await http.get<ResultData<ReArray>>('/user/getpoints') result.length = 0 result.push(...data )}

但这里我们没法处理接口报错的情况,比较常规的写法是try catch 这是一直非常啰嗦的写法,让我们的代码变丑,一种比较优雅的形式是引入await-to-js 

安装命令  npm i await-to-js --save

使用

import to from 'await-to-js';

接下来我们的写法就变成

let result = reactive<ReArray>([])const getResult = async () => {const [err,res] =await to<ResultData<Resource[]>>(http.get('/user/getpoints')) const {data} = resresult.push(...data )}

但这里事实上ts会帮我们类型推导出data有可能不存在

 这时候我们可以使用非空断言!

这样就不会报错了 

to返回的是一个数组

我们可以在if语句里判断err是否存在,从在再去处理逻辑

本文链接地址:https://www.jiuchutong.com/zhishi/297545.html 转载请保留说明!

上一篇:目标检测算法——YOLOv7改进|增加小目标检测层(目标检测算法有哪些)

下一篇:MATLAB与图像处理的那点小事儿~(matlab用于图像处理)

  • 个体工商户年报网上申报入口
  • 甲乙公司与银行之间的往来如何记账
  • 公司注册认缴和实缴的区别
  • 税控系统的清单
  • 房产报废手续
  • 预收货款存入银行分录
  • 有限公司跟股份有限公司的区别
  • 对公账户汇款用途可以随便写吗
  • 2018年一般纳税人转小规模
  • 所得税弥补以前年度
  • 财会人员
  • 非公司私营企业属于什么类型
  • 种香菇会赔钱吗
  • 单位年底发放的补助
  • 全年一次性奖金税收优惠政策2024
  • 增值税发票每个月什么时候可以开
  • 买卖不破租赁什么情况必须搬走
  • 电子发票记账联怎么入账
  • 利润表的上期金额和本期金额之间的关系
  • 小规模核定销售额是什么意思
  • 上月抵扣的进项税这个月怎么做分录
  • 小规模怎么查询
  • 企业拆迁 补偿
  • 调整以前年度所得税汇算清缴报表,在哪调减虚增的成本
  • 股票退市后股票怎么处理
  • 怎么跟银行谈停息挂账
  • macos catalina与macos big区别
  • 代缴社保怎么做账
  • 发票金额大于报销金额违法吗
  • 广告行业物料
  • 英国布莱顿霍夫怎么样
  • 用土地抵账合法吗
  • TCN(Temporal Convolutional Network,时间卷积网络)
  • php制作留言板包含登录和功能实现
  • vue process.env.node_env
  • 科目余额表和资产负债表的金额不一致的原因
  • 代垫运费算收入吗
  • 水利建设基金计算公式
  • 出口报关需要增税吗
  • 利润表本年累计金额和本期金额有什么区别
  • 开发成本结转开发产品的分录
  • 建筑施工企业增值税老项目过度期成本票
  • 银行存款转银行存款 什么凭证
  • 关闭php报错
  • 生产费用在完工产品和在产品之间的方法
  • 消费税算不算运费
  • 公司的违约金
  • 销售折扣收货方法有哪些
  • 生产型出口企业的概念
  • 计提工资包含个人扣款吗
  • 根据《中华人民共和国食品安全法》
  • 企业制造费用包括
  • 销售原材料的差价怎么算
  • 城市维护建设税怎么算
  • 撤回或减少投资所得税处理
  • 长期挂账应付款的处理方法
  • 开出去的发票没有进项发票怎么核算成本?
  • 企业所得税虚报成本多少属于犯罪
  • 小规模纳税人从三万到十万
  • 如何计提五险一金比例
  • 公司账本需要保留几年
  • 电脑怎么改xp系统
  • VirtualBOX给CentOS建共享文件夹的方法
  • scanexplicit.exe - scanexplicit是什么进程 作用是什么
  • kavsvc.exe - kavsvc是什么进程 有什么作用
  • linux windows转linux
  • 麒麟系统怎么执行命令
  • 批处理命令实例
  • bat脚本编写教程菜鸟
  • unity持久化存储
  • 细说java
  • SharedPreferences中的MODE_APPEND 和 MODE_PRIVATE 区别
  • js实现带搜索功能的下拉菜单
  • 广东省国家税务局电子税务局官网
  • 银行流水怎么查
  • 佛山顺德怎么坐地铁到广州
  • 供暖配套费
  • 国家税务总局全国增值税查询
  • 税率的分类有哪些
  • 税务检查的程序
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设