使用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 相关文章推荐
js异或加解密效果代码
Jun 25 Javascript
js 中的switch表达式使用示例
Jun 03 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
Mar 25 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
Feb 05 Javascript
js实现异步循环实现代码
Feb 16 Javascript
jQuery中Nicescroll滚动条插件的用法
Nov 10 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
Apr 09 Javascript
Vue项目服务器部署之子目录部署方法
May 12 Javascript
koa-router路由参数和前端路由的结合详解
May 19 Javascript
JS实现移动端双指缩放和旋转方法
Dec 13 Javascript
Vue.js中使用Vuex实现组件数据共享案例
Jul 31 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 图片上传代码
2011/09/13 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
PHP检查URL包含特定字符串实例方法
2019/02/11 PHP
CSS常用网站布局实例
2008/04/03 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JQuery优缺点分析说明
2010/06/09 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
详谈js模块化规范
2017/07/07 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
浅谈手写node可读流之流动模式
2018/06/01 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
Vue快速实现通用表单验证功能
2019/12/05 Javascript
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
python实现高斯投影正反算方式
2020/01/17 Python
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
英语自荐信范文
2013/12/11 职场文书
综合办公室主任职责
2013/12/16 职场文书
就业协议书怎么填
2014/04/11 职场文书
小学语文业务学习材料
2014/06/02 职场文书
路政管理求职信
2014/06/18 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
SpringBoot 集成Redis 过程
2021/06/02 Redis
Java基础之this关键字的使用
2021/06/30 Java/Android