【发布时间】:2017-04-12 17:41:54
【问题描述】:
按照this Facebook app sample的风格,同时使用Redux和Flow,我这样做了一个动作类型:
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 }
;
但我发现,当我尝试使用 reducer 处理我的操作时,如果我尝试访问 name 或 progress 属性,Flow 会抱怨“在对象类型中找不到属性”。
也就是说,在我的减速器中,如果我检查 action.type === 'HANDLE_IMAGE_PUBLISHED' 然后访问 action.name,Flow 会抱怨。在action.type === 'SET_IMAGE_UPLOAD_PROGRESS' 时访问action.progress 属性也是如此。据我所知,这两种属性访问在各自的情况下都应该是合法的,但 Flow 抱怨道。
但由于某种原因,我可以在任何地方访问action.id,即使我的联合中的一种类型没有指定id 属性。我很困惑。
【问题讨论】: