使用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 相关文章推荐
javascript document.execCommand() 常用解析
Dec 14 Javascript
来自国外的30个基于jquery的Web下拉菜单
Jun 22 Javascript
Web跨浏览器进程通信(Web跨域)
Apr 17 Javascript
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
如何在node的express中使用socket.io
Dec 15 Javascript
js验证框架之RealyEasy验证详解
Jun 08 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 11 Javascript
什么是SOLID
Mar 24 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
五个PHP程序员工具
2008/05/26 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python urlopen 使用小示例
2008/09/06 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Flask框架配置与调试操作示例
2018/07/23 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
什么是TCP/IP
2014/07/27 面试题
女大学生自我鉴定
2013/12/09 职场文书
财务会计实习报告体会
2013/12/20 职场文书
学校运动会报道稿
2014/09/23 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
MongoDB支持的数据类型
2022/04/11 MongoDB