Flow混合类型(Mixed Types)

混合类型(Mixed Types)

单一类型

比如输入值只能是number

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

一组不同的类型:

比如输入值可以是stringnumber

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

基于另一种类型的类型:

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

function identity(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))