javascript - FlowType - 复杂对象的重复声明

标签 javascript flowtype variable-types

请原谅新手问题,我正在努力理解/将 flowType 集成到我的 React/Redux 项目中。

我的问题是,当我们声明包含已声明(其他地方)属性的属性时,我们是否必须重复自己(声明类型)?

为了详细说明,我有高阶函数,它们通过 props 进行过滤,以便使用相关参数调用相关的 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 ) => {
...

我是否必须在每个参数中声明每个属性类型,即使该属性已在其他地方声明? 我将如何处理动态对象?

谢谢

最佳答案

你可以像这样拆分出每种类型,然后你可以根据需要单独使用它。

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可以理解一些动态模式,但你所要求的范围非常广泛。我认为最好用一个具体的例子来发布一个单独的问题。

关于javascript - FlowType - 复杂对象的重复声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43428609/

相关文章:

javascript - 使用 Picnicss 在 Ember 中创建缩略图网格

php - 在 PHP 7 中全局启用 'strict_types'

javascript - 如何检查 var 是否是 JavaScript 中的字符串?

javascript - 在 JavaScript 中如何检测天气类型是 Array 还是 Object?

javascript - 如何使用 addEventListener 使按钮将我的页面重定向到另一个页面?

javascript - 将局部变量作为父函数内部函数的参数传递

javascript - React-Native 预加载 uri 而 webview 不可见

javascript - Flow 的结构子类型 "forget"是否具有特定的子类型属性?

javascript - 什么是流唤醒模式?

javascript - "Subtype"与联合类型不兼容