最近用 angular
必须在TS文件写,我想在返回来的数组对象增加一个新属性。
打个比方我平常增加属性 data.forEach(item => item.check = false)
,但是在TS文件说我 ITEM.check
不存在,那我该如何才能增加新属性。
还有一个问题问问大佬们,定义接口数据必须写到最深层吗,因为我每次想拿 data.item.source
就报错说没有该属性,但我定义了而且接口数组里面有。
这是数据结构TS图
这是请求图
报错图
我修改成功了,但我不理解res.data.data不是一个数组吗那为什么我写observable<Datum[]>加个[]就报错,写Datum就能,他不是一个数组类型吗
反向推测,
Datum
中有_source
,那么law_data$
应该是Datum[]
类型,那么res.data
就是Data
类型,res
就是LawData
类型所以看你的
law_data$
是怎么声明的。另外,如果res
的类型确定,可以直接声明为res: LawData
。searchLawData
的返回类型是Observable<LawData[]>
,所以对它调用subscribe
中的res
应该是LawData[]
而不是LawData
。另外,报错说
LawData[]
上不存在_source
,说明item
的类型是LawData[]
而不是LawData
,那么law_data$: Observable<Datum>
是怎么回事?我模拟了 searchLawData,可以看到如下类型推断:
如果把它的返回类型改一下,把数组类型改成单体类型,就比较符合你需要的逻辑
但这样改的话,如果 http 请求返回的真的是一个数组,那 subscribe 里面的逻辑应该会有问题,它应该是处理一个数组,而不是一个单体。如果是处理数组,就不存在
res.data.data
这样的属性取值,至少应该有res.forEach()
或者res.map()
之类对数组进行处理的逻辑。