说到类型检测,需要明确的是,这里省略了几个大家约定的关键词,较为完整的说法是:使用类型检测工具对JS中的变量、参数自动做数据类型检测。
说的再细化一点:使用ESLint、TypeScript、Flow、PropTypes等工具对JS中的变量、参数自动做数据类型检测。
如果着急,可以直接看文章最后一点,再决定要不要详细看本文。
可能你会疑惑,ESLint、TypeScript我勉强听说过或者用过,Flow、PropTypes我还真不熟,还有必要看下去吗?有必要。因为,如果你在用VUE或者React,其实你就已经接触到了Flow、PropTypes了。此言非虚,Flow是VUE2.x的源码类型校验工具,PropTypes是React内置的类型校验工具,这么说来,是不是觉得熟悉多了。而这篇文章,主要来看看React中,PropTypes的强大之处。
零、为什么需要类型检测一个绕不开的话题,既然是增加工作量,那就要说服我:为啥要用它,不用会有啥坏处。如果整个项目极其简单,没有复杂的高阶组件或者子父组件层级嵌套不深,并且从头至尾是我一个人写的而且工期还紧张,那我倒是觉得类型验证是负向收益。如果上述大多数情况都不符合,举个例子,如果我写了个组件,期望接收数组,并且在接收到该属性后还用了数组的相关方法进行数组操作,某天,我的一个同事进行了一个哈批操作,传递了一个数字过来,即使我写的组件JS就报类型错误了,如果没有错误捕获,页面就白屏了,一旦放到线上,算是P1级别的错误了,即使你多长了个心眼,在操作前做了类型检测和默认值,那也不能满篇都是,所以最好的办法还是让同事规范传值,别整那些歪的斜的。
这里,可以参考一份JS报错统计报告,这份报告从+项目中统计了报错原因前十名,大部分都是由于数据类型导致的。传送门: