首页IT科技ts创建一个对象(TS中快速定义一个对象数组以及处理async await的异常)

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

时间2025-05-05 03:30:29分类IT科技浏览3952
导读:定义一个对象数组(即数组成员为对象,对象的属性为我们所约束)...

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

方法一:接口字面量形式

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:string looktestPoint:string[] viocetsetPoint:string gameReview:string Addvice: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:string looktestPoint:string[] viocetsetPoint:string gameReview:string Addvice:string } >

或者你也可以这么写

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

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

// * 请求响应参数(不包含data) export interface Result { resp_code: string; msg: string; status_code: 200 } // * 请求响应参数(包含data) export interface ResultData<T = any> extends Result { data: T; }

 接下来我们请求数据可能会这样写    ,这是一种严格的数据约束         ,包括定义响应式数组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} = res result.push(...data ) }

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

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

这样就不会报错了 

to返回的是一个数组

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

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
默认网关一般填什么(默认网关为0000怎么办详情)