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 学习笔记二 字符串拼接
Mar 28 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
Apr 02 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
Dec 04 Javascript
javascript如何操作HTML下拉列表标签
Aug 20 Javascript
jQuery拖动元素并对元素进行重新排序
Dec 30 Javascript
用JS写的一个Ajax库(实例代码)
Aug 06 Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 Javascript
jQuery实现文字自动横移
Jan 08 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
JavaScript中Object、map、weakmap的区别分析
Dec 15 Javascript
如何通过简单的代码描述Angular父组件、子组件传值
Apr 07 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基于工厂模式实现的计算器实例
2015/07/16 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
python 实现归并排序算法
2012/06/05 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python绘制规则网络图形实例
2019/12/09 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
大学生学业生涯规划
2014/01/05 职场文书
医院院务公开实施方案
2014/05/03 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
服务口号大全
2014/06/11 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
Web应用开发TypeScript使用详解
2022/05/25 Javascript