Angular Typescript:Arrow函数-TS2339:类型';上不存在属性;{}';
在Angular Typescript:Arrow函数-TS2339:类型';上不存在属性;{}';,angular,typescript,Angular,Typescript,在rxjs流中使用fat arrow函数时,使用Angular,我经常会得到typescript编译错误 我仍然可以运行应用程序,它确实可以传输,但我想知道如何摆脱错误并理解它 鉴于: this.data$ = this.route.params .switchMap(params => Observable.forkJoin([ Observable.of(params),
rxjs
流中使用fat arrow函数时,使用Angular,我经常会得到typescript
编译错误
我仍然可以运行应用程序,它确实可以传输,但我想知道如何摆脱错误并理解它
鉴于:
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)
我得到了错误:
[at loader]中的错误
文件.ts:xx:xx
TS2339:类型“{}”上不存在属性“prop1”
[at loader]中的错误
文件.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)
试试这个:
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)
Typescript认为angular的route参数是空对象,不应具有任何属性。只需将参数输入到any
,错误就应该消失了。您的意思是使用“data.prop1 as any”?不确定语法会是什么样子,如果你能用语法回答的话?这取决于你从api中获得的数据。您的api是否具有prop1的数据?@Smit,是的,它doesTypescript认为angular的路由参数是空对象,不应具有任何属性。只需将参数输入到any
,错误就应该消失了。您的意思是使用“data.prop1 as any”?不确定语法会是什么样子,如果你能用语法回答的话?这取决于你从api中获得的数据。你的api中有prop1的数据吗?@Smit,是的,它也消除了如下错误:[params,data]:any[],谢谢我也消除了如下错误:[params,data]:any[],谢谢