位置: IT常识 - 正文

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

发布时间:2024-01-16
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用于图像处理)

  • 汽车购置税怎么算2023
  • 房地产开发产品科目
  • 汽车租赁企业
  • 小规模减免的增值税怎么做账
  • 什么叫销售劳务
  • 发票没金额能开吗
  • 购买信息技术服务费摘要怎么写
  • 税务逾期记录怎么消除不了
  • 劳务报酬所得是什么
  • 固定性制造费用成本差异是
  • 收到基金计入什么科目
  • 认缴制下收到股东转入的钱怎么入账
  • 公司购买设备24套
  • 一般户可以结算货款吗
  • 开一张增值税发票需要交哪些税
  • 子公司可否将母公司注销
  • 为员工购买的意外保险账务处理
  • 增值税普通发票怎么开
  • 怎么在电子税务局变更财务负责人
  • 公司购房、售房需要缴纳哪些税?
  • 当月增加的投资性房地产当月提折旧吗
  • 2021年购买车辆的进项税能抵扣吗
  • 公司股东和自然人的区别
  • 税务师如何办理入会
  • 路由器间歇性断网怎么解决
  • 代扣代缴返还的手续费科目
  • 一般纳税人出租其2016年4月30日前取得的不动产
  • cpu天梯图,最新
  • Omniserv.exe - Omniserv是什么进程 有什么用
  • 小微企业一般纳税人
  • 电脑出现一堆英文无法开机
  • Linux怎么使用vi
  • 当月收到服务成本票下个月才开出发票
  • bc2.exe
  • uniapp生成h5
  • 哪些房地产项目是国企
  • thinkphp验证码刷新
  • thinkphp框架入门
  • java基础面试题选择题
  • less中使用js变量
  • 500元以下开收据要交税吗
  • 金税盘开票如何增加商品编码
  • 价税合计公式分配
  • 建筑公司遇到的问题
  • mongodb doc
  • 用友u8财务报表打印设置在哪
  • 带薪休假工资怎么扣税的
  • 小规模增值税申报未开票收入怎么填
  • 进项税额是意思
  • 企业年金个人和公司缴费比例
  • 实际出资大于注册资金
  • 理财中的资产是什么意思
  • 电商企业银行账户是什么
  • 应收票据到期收回的会计分录
  • 社会团体收到财政拨款
  • 增值税普通发票查询
  • 刻章发票可以抵扣吗
  • 删除sql server2019
  • 绿色安装包怎么卸载
  • win10系统预览版
  • linux修改软件源
  • win8怎么添加打印机到电脑上
  • xwizard.exe是什么
  • win10扫雷在哪打开
  • windows7的word
  • windows10不能装windows7
  • win7进入dos的方法
  • cocos2d-x教程
  • unity shader lod
  • nodejs怎么下载其他版本
  • 预处理命令可以放在程序中的任何位置
  • vue中的vuex
  • android 图片滚动
  • 基于jquery的移动端ui框架
  • 安卓网络监测
  • javascript入门教程
  • 基于python的应用
  • 税务怎么在外网申报
  • 地税局上班时间是几点
  • 1.8排量够用吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号