2017-03-03 102 views
0

使用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'在類型'{}'上不存在。

爲什麼它會抱怨呢?

+0

打字稿認爲,從棱角分明的路線PARAMS是一個空的對象,不應該有任何屬性。只要將類型轉換爲'any',錯誤應該消失 – cyrix

+0

,所以你的意思是使用「data.prop1作爲任何」?不知道語法如何,如果你可以請用語法回答? – Thibs

+0

這取決於你從api獲得的數據。你的api有prop1的數據嗎? – Smit

回答

1

試試這個:

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

相關問題