代码之家  ›  专栏  ›  技术社区  ›  Buggy

使用默认值对函数的参数进行分解的flowType

  •  1
  • Buggy  · 技术社区  · 6 年前

    在这种情况下,我们有没有不破坏类型检查的解决方法?

    // Error
    function foo({name = 42}: {name: ?number}) {
      //          ^ null or undefined [1] is incompatible with number [2].
      console.log(name);
    }
    

    解决方案来自 the bug 阻止流检查默认值类型。

    // Correct
    const foo = ({name = true}: $Subtype<{name: ?string}>) => {
      //                 ^ flow does not check this
      console.log(name);
    }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Peter Hall    6 年前

    function foo(props: {name: ?number}) {
        let name = props.name === undefined ? 41 : props.name;
        console.log(name);
    }
    
        2
  •  0
  •   Buggy    6 年前

    我们有一个用于添加类型的旧代码库,所以我们不想更改功能。

    在正文中而不是在页眉中分解参数-对我来说很好。

    function foo(arg: {name: ?number}) {
      const { name = 42 } = arg;
      // the default value is only used for undefined values.
      console.log((name: (number | null)));
    }