2017-09-29 71 views
0

使用流動型與終極版一起,我有一個類型是這樣的:允許局部型

export type MapState = { 
    addresses: Address[], 
    selected: Array<number> 
} 

和動作創作者:

export const setParams = (params: any): Action => { 
    return { type: actionTypes.SET_PARAMS, payload: { params }; 

} 

在減速機,我合併PARAMS進入狀態:

export default (state: MapState = initialState, action: SetParamsAction) => { 
    switch (action.type) { 
    case actionTypes.SET_PARAMS: { 
     return { 
     ...state, 
     ...action.payload.params 
     } 
[...] 

我正在尋找一個可能性告訴流動型接受params在行動的創建者,如果它是僅由MapState的屬性組成的對象,以便我可以擺脫setParams中的any。任何想法?

回答

1

你可以只添加一個exact PossibleParams Object type像這樣:

type PossibleParams = {| 
    addresses?: Address[], 
    selected?: number[], 
|}; 

export const setParams = (params: PossibleParams): Action => ({ 
    type: actionTypes.SET_PARAMS, 
    payload: { 
    params, 
    }, 
}); 

您可以檢查flow.org/try

+0

感謝你的貢獻一切準備!是的,我意識到這種可能性,但我寧願不使用可選屬性重複該類型。 – schneck

+0

@schneck一個確切的對象類型是100%確定參數只能是指定參數而沒有其他參數的唯一方法。由於所有參數都是可選的,因此您需要使其成爲可選的確切對象類型。沒有其他辦法可以讓流程檢查參數。 – MichaelDeBoey