美文网首页
Flow混合类型(Mixed Types)

Flow混合类型(Mixed Types)

作者: vincent_z | 来源:发表于2018-01-25 22:36 被阅读0次

    混合类型(Mixed Types)

    单一类型

    比如输入值只能是number

    function square(n: number) {
      return n * n;
    }
    

    一组不同的类型:

    比如输入值可以是stringnumber

    function stringifyBasicValue(value: string | number) {
      return '' + value;
    }
    

    基于另一种类型的类型:

    这里的返回值类型将和传递给函数的任何值的类型相同。

    function identity<T>(value: T): T {
      return value;
    }
    

    任意类型

    这里传入的值是一个未知的类型,它可以是任何类型,并且该函数仍然可以运行。

    function getTypeOf(value: mixed): string {
      return typeof value;
    }
    

    混合类型mixed接收任何类型的值。字符串,数值,对象,函数等。

    function stringify(value: mixed) {
      // ...
    }
    
    stringify("foo");
    stringify(3.14);
    stringify(null);
    stringify({});
    

    当你尝试使用混合类型的值时,你必须先确定实际类型,否则会抛出异常。

    // @flow
    function stringify(value: mixed) {
      // $ExpectError
      return "" + value; // Error!
    }
    
    stringify("foo");
    
    // @flow
    function stringify(value: mixed) {
      if (typeof value === 'string') {
        return "" + value; // Works!
      } else {
        return "";
      }
    }
    
    stringify("foo");
    

    通过typeof value==='string'检查,Flow知道该值只能在if语句中值为string的情况下处理。

    相关文章

      网友评论

          本文标题:Flow混合类型(Mixed Types)

          本文链接:https://www.haomeiwen.com/subject/qcibaxtx.html