2017-04-15 129 views
0

原諒新手問題,我正在努力通過理解/將flowType集成到我的react/redux項目中。FlowType - 重複複雜對象的聲明

我的問題是,當我們聲明包含已聲明(其他)屬性的屬性時,我們是否必須重複自己(聲明類型)?

詳細說明,我有高階函數,它通過道具進行過濾,以便相關的action-creator函數被調用相關參數。這是一個HO函數,它將4個對象作爲參數。

只關注第一個:envProps。其代碼如下:

type envProps = { 
    eCCurSelectedEle : string, 
    renderTab : string, 
    target : { 
     pos : string, 
     // collection is an object containing dynamically 
     // inserted template objects with sub-objects. How would 
     // I handle this? Do I have to break-down each object 
     // property in this 'collection' & declare its inner 
     // prop types and so on? 
     collection : Object 
    }, 
    targetPos : { 
     h : number, 
     w : number, 
     pageX : number, 
     pageY : number 
    }, 
    toolbarCtrl : string 
}; 

// just focusing on the first prop: envProps 
export const svgMouseDownHandler = (envProps : envProps, 
               svgProps, 
               target, 
               prevSelectedTarget) => { 
... 

我必須聲明每個參數中的每個屬性類型,即使該財產已經申報別的地方? 我將如何處理動態對象?

謝謝,

回答

2

您可以拆分每種類型,然後您可以根據需要單獨使用它。

type Target = {                 
    pos: string,                 
    // collection is an object containing dynamically        
    // inserted template objects with sub-objects. How would      
    // I handle this? Do I have to break-down each object       
    // property in this 'collection' & declare its inner       
    // prop types and so on?              
    collection: Object                
};                    

type TargetPos = {                
    h: number,                  
    w: number,                  
    pagex: number,                 
    pageY: number                 
};                    

type envProps = {                 
    eCCurSelectedEle: string,              
    renderTab: string,                
    target: Target,                 
    targetPos: TargetPos,               
    toolbarCtrl: string                
}; 

對於動態對象,Flow可以理解一些動態模式,但是您詢問的內容非常寬泛。我認爲最好針對具體的例子單獨提出一個問題。