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 JSQL,SQL无处不在,
May 05 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
密码强度检测效果实现原理与代码
Jan 04 Javascript
javascript实现tab切换特效
Nov 12 Javascript
web 前端常用组件之Layer弹出层组件
Sep 22 Javascript
JS命令模式例子之菜单程序
Oct 10 Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 Javascript
谈谈JS中的!!
Dec 07 Javascript
详解node.js的http模块实例演示
Jul 12 Javascript
JS实现的RC4加密算法示例
Aug 16 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 Javascript
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使用JSON和将json还原成数组
2015/02/12 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
php中final关键字用法分析
2016/12/07 PHP
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
原生python实现knn分类算法
2019/10/24 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
高二英语教学反思
2014/01/19 职场文书
大学生村官演讲稿
2014/04/25 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
民生工作实施方案
2014/05/31 职场文书
《正比例》教学反思
2016/02/23 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android