【问题标题】:Flow js predicate functionFlow js谓词函数
【发布时间】:2019-10-25 06:38:21
【问题描述】:

我正在尝试使用谓词函数 (https://flow.org/en/docs/types/functions/#toc-predicate-functions),但它不起作用。

给定以下代码:

/* @flow */
// Some function we need exact types for
const someFunc = (addressLine1: string, city: string, zip: string) => ({})

// Predicate
function checker(addressLine1: ?string, city: ?string, zip: ?string): boolean %checks {
  return Boolean(addressLine1 && city && zip)
}

// Logic
const addressLine1: ?string = 'a'
const city: ?string = 'b'
const zip: ?string = 'c'

if(checker(addressLine1, city, zip)){
  someFunc(addressLine1, city, zip)
}

阅读文档后,我希望上面的代码没有任何错误,但 Flow 抱怨 addressLine1cityzip 在调用 someFunc() 时可能未定义。

这是一个工作(好吧,错误)示例:https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoYwwGU4FsCmYUArgHYDGALgJZylgKGn74AmY+AHgIZViUBPAA74AzkTgAnVOTqjKYUXnwAxMuTABeMAApurVpLGiAMtWYBGAFyLKk8wHMANGHLVBN+fdLOwAL2ohTztHAEotAD5dAG8AX1DUdEwABSNWanJuSnxUEgoaOlcAC3xyAGt8ST0DI1FTc3xrMAB+L0cXNw8Wtp8XAKDukJ9QmwAjODgYfG56AFJyEvLxaNQwMCNKYkl6ACEJqZnqw2MzSzAAMnPXdwELq-6E2MSMMBM4BwyZOQV9Y7rTxo2VpDBxaMAAcm44K+pHk1y6wO8oO04NG0NksIU-SBPWREPI0NQ1CgOgWpQqVV+tXqlg6Nz6gVCoRWayUBDUFCO1IBFjpggZQkeQA

对我做错了什么有任何见解吗?

提前致谢, 丹

【问题讨论】:

    标签: javascript flowtype predicate


    【解决方案1】:

    我相信这种情况下的问题是将返回值包装在 Boolean() 中。一旦我删除错误就解决了。

    更正的代码:

    /* @flow */
    // Some function we need exact types for
    const someFunc = (addressLine1: string, city: string, zip: string) => ({})
    
    // Predicate
    function checker(addressLine1: ?string, city: ?string, zip: ?string): boolean %checks {
      return !!addressLine1 && !!city && !!zip
    }
    
    // Logic
    const addressLine1: ?string = 'a'
    const city: ?string = 'b'
    const zip: ?string = 'c'
    
    if(checker(addressLine1, city, zip)){
      someFunc(addressLine1, city, zip)
    }
    

    在“尝试流程”中:https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoYwwGU4FsCmYUArgHYDGALgJZylgKGn74AmY+AHgIZViUBPAA74AzkTgAnVOTqjKYUXnwAxMuTABeMAApurVpLGiAMtWYBGAFyLKk8wHMANGHLVBN+fdLOwAL2ohTztHAEotAD5dAG8AX1DUdEwABSNWanJuSnxUEgoaOlcAC3xyAGt8ST0DI1FTc3xrMAB+L0cXNw8Wtp8XAKDukJ9QmwAjODgYfG56AFJyEvLxaNQwMCNKYkl6AEId-UNjM0swADJTsD3OgTOLvf7UWMSMMBM4BwyZOQUD2vrLGytIYOLRgADk3DBX1I8lc7gEgJ6IO0YNGUNkMIU-URwNBYPIUNQ1CgOgWpQqVV+RwaFg68L6gVCoRWayUBDUFGqhzqx0adMEDKECViQA

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 2010-10-11
      • 2019-02-17
      • 2019-03-15
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多