JavaScript静态类型检查工具FLOW简介


Posted in Javascript onJanuary 06, 2015

Flow是Facebook出品的,针对JavaScript的静态类型检查工具。其代码托管在github之上,并遵守BSD开源协议。

关于Flow

它可以帮助我们捕获JavaScript开发中的常见错误,而不需要额外地修改你原有的代码,比如静态类型转换,空值引用等问题。
同时,Flow为JavaScript添加了静态类型的语法标识,这样开发者便可以明确代码中的类型,让其自动地被Flow所维护。
目前,Flow具有以下两特性:

1. Flow的类型检查具有可选性

除非你明确告诉Flow需要对某些文件进行类型检查,否则它是不会检查你不需要检查文件的。这就是说,你可以慢慢地将你的代码库转到Flow之上,继续收获其持续增长的价值。
比如你选择了一个文件进行检查,Flow会自动地对你代码的类型检查,并查出你的代码中的错误。不过,如果你的代码分得很细并存在于不同的文件之中,这种做法显得太麻烦。但有些时候,你选择检查一些很大型的库,Flow可能会不是那么准确。在这种情况下,我们可以手动地采用“类型注解”或者切换到“弱模式”下限制其类型引用来解决问题。

2. Flow的类型检查是在线的

在对代码库进行检查时,Flow会对其做一个初步的分析,然后会在后台对后续变化做持续的监测,类型检查,以及依赖检查。对开发者来说,意味着不需要花大把的时间在编译之上。当批量保存文件的时候,会自动触发Flow的类型检查,会并把结果持久化,以备再用。

使用与期望

Flow是一个由Facebook出品的新新库,大量的特性还在开发过程之中。其长远的目标是:想让JavaScript
的开发体验变得更好,而不用去妥协语言中最本质的东西。我们想要开发者拥有强大的工具,去明白如何去维护他们的代码,更方便安全地复用与优化他们的代码。在早期选择开源,也是希望能给Flow一个机会,快速地在所有开发者面前成长起来。

接下来,我会讲到一些例子,帮助大家快速了解Flow如何工作,以及如何通过Flow让我们更好的工作。

Javascript 相关文章推荐
javascript 关于# 和 void的区别分析
Oct 26 Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
Angular.js中angular-ui-router的简单实践
Jul 18 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
Jan 17 Javascript
webpack之devtool详解
Feb 10 Javascript
浅谈Redux中间件的实践
Jul 27 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
JavaScript常用事件介绍
Jan 21 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
让Vue响应Map或Set的变化操作
Nov 11 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
jQuery中filter()方法用法实例
Jan 06 #Javascript
JavaScript修改浏览器tab标题小技巧
Jan 06 #Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 #Javascript
jQuery中hasClass()方法用法实例
Jan 06 #Javascript
jQuery中last()方法用法实例
Jan 06 #Javascript
jQuery中first()方法用法实例
Jan 06 #Javascript
jquery解决客户端跨域访问问题
Jan 06 #Javascript
You might like
php数组总结篇(一)
2008/09/30 PHP
提高PHP编程效率的53个要点(经验小结)
2010/09/04 PHP
php数组使用规则分析
2015/02/27 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
filemanage功能中用到的common.js
2007/04/08 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
Python读取properties配置文件操作示例
2018/03/29 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
C有"按引用传递"吗
2016/09/06 面试题
.NET方向面试题
2014/11/20 面试题
物业管理员岗位职责范文
2013/11/25 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
纪检监察立案决定书
2015/06/24 职场文书