Flow混合类型(Mixed Types)

混合类型(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的情况下处理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,967评论 0 38
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,235评论 0 13
  • 学习如何在Flow中使用React 将Flow类型添加到React组件后,Flow将静态地确保你按照组件被设计的方...
    vincent_z阅读 6,445评论 4 21
  • 来大学快一年了,时间过得快吗?我问我自己,应该快的吧。都来不及抓住某些记忆放进脑海了,就这么悄无声息的流逝了。然而...
    爱吃鱼的祝大潘阅读 214评论 0 1
  • 1.昨天加班到半夜12点,接纳自己不能完成打卡作业( ՞ټ՞),接纳加班到半夜,无怨无悔。接纳孩子也没总结出来自己...
    琴韵华影阅读 218评论 2 2