打字稿:箭头功能 - TS2339:属性在类型“{}”上不存在
问题描述:
使用Angular时,在rxjs
流内使用fat arrow functions
时,我经常会收到typescript
编译错误。打字稿:箭头功能 - TS2339:属性在类型“{}”上不存在
我仍然可以运行该应用程序,它确实会传输,但我想知道如何摆脱错误并理解它。
考虑:
this.data$ = this.route.params
.switchMap(params =>
Observable.forkJoin([
Observable.of(params),
this.http.get('/api', { param1: params.param1, param2: params.param2 })
])
//**Errors from this part below**
.map(([params, data]) => data.prop1 + ' - ' + params.param1)
我得到的错误:
错误的[在装载机] file.ts:XX:XX TS2339:房产 '为prop1' 不存在上键入“{}”。
ERROR in [at-loader] file.ts:xx:xx TS2339:属性'param1'在类型'{}'上不存在。
为什么它会抱怨呢?
答
试试这个:
this.data$ = this.route.params
.switchMap((params: any) =>
Observable.forkJoin([
Observable.of(params),
this.http.get('/api', { param1: params.param1, param2: params.param2 })
])
//**Errors from this part below**
.map(([params, data]: [any, any]) => data.prop1 + ' - ' + params.param1)
+0
我也摆脱了这样的错误:[params,data]:任何[],谢谢你 – Thibs
打字稿认为,从棱角分明的路线PARAMS是一个空的对象,不应该有任何属性。只要将类型转换为'any',错误应该消失 – cyrix
,所以你的意思是使用“data.prop1作为任何”?不知道语法如何,如果你可以请用语法回答? – Thibs
这取决于你从api获得的数据。你的api有prop1的数据吗? – Smit