使用flow来规范javascript的变量类型


Posted in Javascript onSeptember 12, 2019

众所周知, js是弱类型的语言,由此有了很多的优点,也出现了大量由此导致的错误,难以定位。当然有类似于ts之类的语法糖来解决此问题,ts因为是从c#演变而来的,所以入门有一定的门槛,所以我们来一下flow这个更轻巧的工具。

先来看一下flow在vs code中的表现效果:

使用flow来规范javascript的变量类型

跟ts的提示类似,它会实时检测所有的包含flow注释的文件,在vscode中需要安装Flow Language Support插件.

如何安装

安装过程可以使用yarn和npm安装,推荐使用yarn,因为安装起来会更快。

yarn add --dev @babel/core @babel/cli @babel/preset-flow

 然后在.babelrc中添加此插件

{
 "presets": ["@babel/preset-flow"]
}

 添加flow-bin的依赖

yarn add --dev flow-bin

 执行flow:

yarn run flow

执行成功后,会在后台启动一个进程进行监听,如果你已经安装了vscode的插件的话,可以忽略这一步,插件会自动启用flow.

 使用强类型

做完上面这些后,你就可以在你的js文件中使用强类型来约束你的代码了,在需要使用flow的文件头部添加/ / @flow

// @flow
function foo(x: ?number): string {
 if (x) {
  return x;
 }
 return "default string";
}

然后运行 yarn run flow  你就可以看到如下的输出

test.js:5
 5:   return x;
        ^ number. This type is incompatible with the expected return type of
 3: function foo(x: ?number): string {
                ^^^^^^ string

如果你使用vscode的插件,就会在保存的时候自动提示这些错误出来,如第一张示例图片那样。

相关资料:

flow官网:https://flow.org/en/

在线尝试:https://flow.org/try/

总结

以上所述是小编给大家介绍的使用flow来规范javascript的变量类型,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
HTA版JSMin(省略修饰语若干)基于javascript语言编写
Dec 24 Javascript
JavaScript中的细节分析
Jun 30 Javascript
ExtJS[Desktop]实现图标换行示例代码
Nov 17 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
js控制多图左右滚动切换效果代码分享
Aug 26 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
javascript实现简易计算器
Feb 01 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
vue中v-for加载本地静态图片方法
Mar 03 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 Javascript
15分钟上手vue3.0(小结)
May 20 Javascript
LayUI数据接口返回实体封装的例子
Sep 12 #Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 #Javascript
layui框架与SSM前后台交互的方法
Sep 12 #Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 #Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 #Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
Sep 12 #Javascript
JS计算斐波拉切代码实例
Sep 12 #Javascript
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
一个PHP操作Access类(PHP+ODBC+Access)
2007/01/02 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
javascript正则表达式使用replace()替换手机号的方法
2015/01/19 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
JS 动态判断PC和手机浏览器实现代码
2016/09/21 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
JS实现分页导航效果
2020/02/19 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
Python 字典(Dictionary)操作详解
2014/03/11 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
酒店销售主管岗位职责
2014/01/04 职场文书
医学生自我评价
2014/01/27 职场文书
总经理工作职责范文
2014/03/14 职场文书
授权收款委托书
2014/09/23 职场文书
女方离婚起诉书
2015/05/18 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL