繼this Facebook app sample使用終極版的風格和流動起來,我做了這樣一個動作類型:使用流量聯盟類型Redux的行動
type Action =
| { type: 'ADD_FILES', files: Array<{ id: number, file: File }> }
| { type: 'HANDLE_IMAGE_PUBLISHED', id: number, name: string }
| { type: 'SET_IMAGE_UPLOAD_PROGRESS', id: number, progress: number }
;
但我發現,當我嘗試處理我的行爲如果我嘗試訪問name
或progress
屬性,並說「在對象類型中沒有找到屬性」,則Flow會抱怨說有一個Reducer。
也就是說,在我的減速器中,如果我檢查action.type === 'HANDLE_IMAGE_PUBLISHED'
然後訪問action.name
,Flow會抱怨。當action.type === 'SET_IMAGE_UPLOAD_PROGRESS'
時訪問action.progress
屬性也是一樣的。據我所知,這些財產訪問應該在各自的情況下是合法的,但是Flow抱怨道。
由於某種原因,即使我工會中的某種類型沒有指定id
屬性,我也可以在任何地方訪問action.id
。我很困惑。
Here is a live demo in the Flow REPL。我究竟做錯了什麼?
我明白了,謝謝你的解釋。我想,使用'experimental.const_params = true'是有道理的,因爲我也使用ESLint的'no-param-reassign'規則。 – callum