请问一下在ts文件中请求回来的数据为什么解构data取里面的属性值就报错说没有该类型?
最近用 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()
之类对数组进行处理的逻辑。

- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容