JavaScript静态类型检查工具FLOW简介
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 静态树菜单实现代码
谁有兴趣的话可以改成动态加载数据,或者用jquery,代码肯定会少很多!我发现添加一些css,这棵树在静态页面还是大有用途的! .expand{ cursor:pointer; } .hide{ cursor:pointer; } function toggleChild(o) { var cls = o.getAttribute("class"); if (cls == "expand") { var sb = o.nextSibling; if (window.
-
AngularJS入门教程(一):静态模板
为了说明angularJS如何增强了标准HTML,我们先将创建一个静态HTML页面模板,然后把这个静态HTML页面模板转换成能动态显示的AngularJS模板. 在本步骤中,我们往HTML页面中添加两个手机的基本信息,用以下命令将工作目录重置到步骤1. 复制代码 代码如下: git checkout -f step-1 请编辑app/index.html文件,将下面的代码添加到index.html文件中,然后运行该应用查看效果. app/index.html 复制代码 代码如下: <ul>
-
JSP中动态include与静态include的区别介绍
动态INCLUDE 用法:<jsp:include page="included.jsp" flush="true" /> 说明:它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,先编译之后再进行处理. 原因:1.静态include的结果是把其他jsp引入当前jsp,两者合为一体. 2.静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设
-
jsp中include指令静态导入和动态导入的区别详解
1.什么是静态导入? 静态导入指的是,将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来.include的静态导入指令使用语法: 复制代码 代码如下: <%@include file="relativeURLSpec"%> 静态导入使用范例include1.jsp: 复制代码 代码如下: <%@ page contentType="text/html; charset=utf-8" langu
-
js静态方法与实例方法分析
js静态方法 复制代码 代码如下: function foo(){} // 声明类 foo.method = function(){} // 方法体 使用:foo.method() js实例方法 function foo(){ // 声明类 this.method = function(){ // 方法体 } } 使用:var f = new foo(); f.method();
-
Flow之一个新的Javascript静态类型检查器
今天我们兴奋的发布了 Flow 的尝鲜版,一个新的Javascript静态类型检查器.Flow为Javascript添加了静态类型检查,以提高开发效率和代码质量.更明确的说,静态类型检查提供的好处像早期错误检查,帮助你发现一些只有在运行时才能发现的错误,以及代码智能感知,它会帮助代码维护,查找,重构和优化. 我们设计Flow的所有功能构建在现有Javascript规范之上.因为Flow主动地在后台工作,所以额外的编译开销很小.Flow并不要求开发者如何编写代码 -- 她用一套复杂的算法分析你熟悉
-
禁止IIS缓存静态文件的方法(png,js,html等)
禁止IIS缓存静态文件(png,js,html等)背景:IIS为了提高性能,默认情况下会对静态文件js,html,gif,png等做内部缓存,这个缓存是在服务器iis进程的内存中的.IIS这么做在很大程度上可以提高静态文件的访问性能,在正常情况下只要静态文件更新了IIS也会更新缓存.但是如果更新的静态文件很多就有可能出现缓存不更新的情况. 弯路:我遇到这样一个场景,服务器循环更新上万张股票行情图片,IIS也会对图片进行缓存,由于更新的频率很高,文件很多,就出现了IIS缓存文件超过几十分钟都无法更
-
Javascript获取HTML静态页面参数传递值示例
给大家看一下我的代码 只要把这些代码嵌入到页面文件即可 例一 利用正则表达式来获取 复制代码 代码如下: var LocString = String(window.document.location.href); function getQueryStr(str) { var rs = new RegExp("(^|)" + str + "=([^&]*)(&|$)", "gi").exec(LocString), tmp; i
-
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
想要实现 TreeGrid的效果,打开官方例子却看不到效果,怎么办呢?我是这样实现的 复制代码 代码如下: var root = new Ext.tree.TreeNode({ text: '根节点', expanded: true }); tree.setRootNode(root); var nodes = {}; nodes.children = mydata;/*TreeGrid的json数据[{--},{--}]*/ function appendChild(node, o) { if
-
JavaScript静态类型检查工具FLOW简介
Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可以帮助我们捕获JavaScript开发中的常见错误,而不需要额外地修改你原有的代码,比如静态类型转换,空值引用等问题. 同时,Flow为JavaScript添加了静态类型的语法标识,这样开发者便可以明确代码中的类型,让其自动地被Flow所维护. 目前,Flow具有以下两特性: 1. Flow的类型检查具有可选性 除非你明确告诉Flow需要对某些文件
-
Python静态类型检查新工具之pyright 使用指南
Python是一门动态类型的语言,民间流传一种说法叫"动态一时爽,重构火葬场",听起来够吓人的,好在这门语言在不断地改进,包括对 PEP484 引入的类型提示(Type Hint),就是在某种程度上,让Python能够像静态语言一样支持类型声明,例如: def greeting(name: str) -> str: return 'Hello ' + name 这就意味着,如果有人调用 greeting函数的时候,传入的参数不是字符串,你用静态类型检查工具一下就能查出来哪些地方没
-
介绍一款python类型检查工具pyright(推荐)
近日,微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注. 微软在开源项目上的参与力度是越来越大了,不说收购 Github 这种大的战略野心,只说它家开源的 VS Code 编辑器,在猿界已割粉无数,连我 Python 圈的红人 Kenneth Reitz(多个开源项目的作者,包括 requests.requests-html.responder等)都对它赞不绝口. 如今开源的 Pyright ,口碑还不错,那我们就来看看它有啥本事,顺便
-
4款Python 类型检查工具,你选择哪个呢?
微软在 Github 上开源了一个 Python 静态类型检查工具:pyright ,引起了社区内的多方关注. 微软在开源项目上的参与力度是越来越大了,不说收购 Github 这种大的战略野心,只说它家开源的 VS Code 编辑器,在猿界已经割粉无数,连我们 Python 圈的红人 Kenneth Reitz (多个开源项目的作者,包括 requests.requests-html.responder等)都对它赞不绝口. 如今开源的 Pyright ,口碑还不错,那我们就来看看它有啥本事,顺便
-
Java中静态类型检查是如何进行的实例思路详解
以下内容来自维基百科,关于静态类型检查和动态类型检查的解释: •静态类型检查:基于程序的源代码来验证类型安全的过程: •动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 以下代码是一个例子,理解了他,你会更好的理解Java静态类型检查是如何工作的. 代码示例 假定我们有如下类,A和B,B继承A. class A { A me() { return this; } public void do
-
Java的静态类型检查示例代码详解
关于静态类型检查和动态类型检查的解释: 静态类型检查:基于程序的源代码来验证类型安全的过程: 动态类型检查:在程序运行期间验证类型安全的过程: Java使用静态类型检查在编译期间分析程序,确保没有类型错误.基本的思想是不要让类型错误在运行期间发生. 在各色各样的编程语言中,总共存在着两个类型检查机制:静态类型检查和动态类型检查. 静态类型检查是指通过对应用程序的源码进行分析,在编译期间就保证程序的类型安全. 动态类型检查是在程序的运行过程中,验证程序的类型安全.在Java中,编译期间使用静态类型
-
C++的静态类型检查详解
目录 什么时候引进的? 一个有趣的观察 窄转换 警告的使用 总结 什么时候引进的? 在带类的C的时候,引进了静态(“强”)类型检查. bjarne在<The Design and Evolution of C++ >介绍: 在经历过Simula和Algol68的经验之后,静态类型检查对于我而言已经是一种必需品,唯一的问题是如何把它加进来 一个有趣的观察 学过带类的C(或C++)的程序员竟丧失了寻找由于简单类型错误而造成的运行错误的能力.由于他们逐渐习惯于依赖带类的C(或C++)所提供的类型检查
-
vue项目配置使用flow类型检查的步骤
你是否经常在debug那些简单可避免的bug?可能你给函数传参的时候搞错了参数的顺序,或者本来应该传个Number类型的参数,你传了一个String类型?JavaScript的弱类型是这一类bug的罪魁祸首,静态类型语言中不存在此类bug.Flow就是JavaScript的静态类型检查工具,该库的目标在于检查JavaScript中的类型错误,开发者通常不需要修改代码即可使用,故使用成本很低.同时,它也提供额外语法支持,使得开发者能更大程度地发挥Flow的作用. 一.flow的安装 flow可以直
-
Python中类型检查的详细介绍
前言 大家都知道Python 是一门强类型.动态类型检查的语言.所谓动态类型,是指在定义变量时,我们无需指定变量的类型,Python 解释器会在运行时自动检查. 与静态类型语言(如 C 语言)相比,这不仅仅是少写了几个类型声明字符: #include <stdlib.h> #include <stdio.h> #define BUFF 100 char* greeting(char* name){ char* msg = (char *) malloc(sizeof(char) *
随机推荐
- js面向对象 多种创建对象方法小结
- vue中配置mint-ui报css错误问题的解决方法
- Msd、Undelete命令使用说明
- 基于jQuery的为attr添加id title等效果的实现代码
- DEBUG 命令详解
- Android屏幕分辨率工具类使用详解
- MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
- canvas学习之API整理笔记(二)
- 两个命令把 Vim 打造成 Python IDE的方法
- C++实现的大数相乘算法示例
- MySQL多表链接查询核心优化
- 几行代码轻松搞定jquery实现flash8类似的连接效果
- jquery获取子节点和父节点的示例代码
- windows 2008 iis 提示401未授权 由于凭据无效,访问被拒绝
- javascript获取网页各种高宽及位置的方法总结
- PHP新手上路(九)
- 分享十三个最佳JavaScript数据网格库
- C#实现的鼠标钩子
- Android studio编写简单的手电筒APP
- Docker学习笔记之容器查看启动终止删除的方法