美文网首页
Flow入门初识

Flow入门初识

作者: 藕藕藕汀 | 来源:发表于2018-06-11 17:06 被阅读1149次

Flow是facebook出品的JavaScript静态类型检查工具。
由于JavaScript是动态类型语言,它的灵活性也会造成一些代码隐患,使用Flow可以在编译期尽早发现由类型错误引起的bug,这种方式非常有利于大型项目源码的开发和维护,

1.Flow工作方式

类型推断:通过变量的使用上下文来推断,然后根据这些推断来判断类型。
类型注释:事先注释数据类型,Flow会基于注释来判断。

2.Flow安装

$mkdir flowtest
$npm install --g flow-bin
$flow init  //初始化,创建一个.flowconfig文档
$flow

3.使用

// @flow
function square(n: number): number {
    return n * n;
  }
  
  square("2"); // Error!
$flow

(1)原始数据类型

// @flow
function concat(a: string, b: string) {
    return a + b;
  }
  concat("1", 2); // Error!
// @flow
function method(x: number, y: string, z: boolean) {
  // ...
}

method(3.14, "hello", true);//No errors!
// @flow
function method(x: Number, y: String, z: Boolean) {
  // ...
}

method(new Number("111"), new String("world"), new Boolean(false));//No errors!

(2)类和对象
Object

// @flow
var obj1: { foo: boolean } = { foo: true };
var obj2: {
  foo: number,
  bar: boolean,
  baz: string,
} = {
  foo: 1,
  bar: true,
  baz: 'three',
};//No errors!
//@flow
class Bar {
    x: string;           // x 是字符串
    y: string | number;  // y 可以是字符串或者数字
    z: boolean;
  
    constructor(x: string, y: string | number) {
      this.x = x
      this.y = y
      this.z = false
    }
  }
var bar: Bar = new Bar('hello', 4)

var obj: { a: string, b: number, c: Array<string>, d: Bar } = {
  a: 'hello',
  b: 11,
  c: ['hello', 'world'],
  d: new Bar('hello', 3)
}
//No errors!

Array

//@flow
let arr: Array<number> = [1, 2, 3];

(3)自定义类型
Flow 提出了一个 libdef 的概念,可以用来识别这些第三方库或者是自定义类型。例如vuejs的对flow的使用。vue源码下flow文件夹。

相关文章

  • Flow入门初识

    Flow是facebook出品的JavaScript静态类型检查工具。由于JavaScript是动态类型语言,它的...

  • Flow-01-初识

    安装flow, 第一次安装比较慢 初始化.flowconfig文件 关闭vs自带的代码验证,输入 javascri...

  • MyBatis-从查询昨天的数据说起

    前段时间写了《RabbitMQ入门》系列RabbitMQ入门-初识RabbitMQ RabbitMQ入门-从Hel...

  • 前端入门系列

    前端HTML & CSS 基础入门(1)初识 前端HTML & CSS 基础入门(2)段落及文本 前端HTML &...

  • 认识flow到入门

    认识Flow,Flow是一个类型检查器,加入类型注释的,即叫做覆盖类型 why Flow javascript是一...

  • 微服务开发相关学习资料

    Go语言圣经(中文版)Docker — 从入门到实践GitHub Flow如何"优雅"地发布自己的 go modu...

  • Metal入门003-案例:渲染背景色

    Metal入门001-初识MetalMetal入门002-Metal相关API 本文通过渲染背景色这个小案例,展现...

  • 2020年最新UI设计自学教程

    2020年最新UI设计自学教程 入门级别教程比较适合,纯小白入门。从软件初识到软件熟练掌握,实现无压力入门蜕变。 ...

  • 每日总结-第五十二天-Android脱壳

    参考链接 ApkShelling脱壳和FART脱壳Frida从入门到入门—安卓逆向菜鸟的frida食用说明初识Fr...

  • git flow入门教程

    Git Flow是一套基于Git进行开发流程管理的框架,其精髓在于其流程可以使得多人协作时可以有效地配合项目流程进...

网友评论

      本文标题:Flow入门初识

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