2016-12-09 93 views
1

我打以下錯誤流動型未檢測的屬性類型中的對象

90:    var b = action.data; 
           ^^^^ property `data`. Property not found in 
90:    var b = action.data; 
         ^^^^^^ object type 

這是接收action作爲像這樣的參數的函數的內部:

export default (state: SecurityGroupState = { groups: null, editingIPRange: null }, action: Action) => { 

類型Action導入使用import type像這樣:

import type { Action } from "../../actions"; 

它被聲明爲這樣:

export type Action = { 
    type: string, 
    data: Object, 
} | { 
    type: string, 
    error: Object, 
}; 

被觸發初始錯誤代碼如下:

switch (action.type) { 
case GET: 
    if (action.error) { 
     console.error(action.error); 
     break; 
    } 

    var a = action.data; // no error here 
    const groupsCopy2 = _.map(state.groups,() => { 
     var b = action.data; 
    }); 
} 

所以在var a = ...線,流量是action.data OK,但map拉姆達內它似乎並不知道action: Action可以有一個data密鑰。

回答

2

流程對改進很不樂觀,它認爲每個函數調用都可以修改action.data。至於修復,你可以使用constbinding

const data = action.data 
const groupsCopy2 = _.map(state.groups,() => { 
    var b = data; 
}); 
相關問題