【源码共读】Arrify转数组

102 阅读2分钟

一、  Arrify代码阅读

          package.json回顾

从github拉取代码后发现本次代码结构和之前的不太一样,之前看过package.json文件的介绍(链接:juejin.cn/post/709904…),首先对package.json文件进行查看,查看项目的入口文件,发现没有main属性,再回顾发现包含export属性

这个字段所定义的内容就是该npm包的真实和全部的导出,优先级高于main和file等字段

因此可以直接根据此属性去往index.js文件查看npm包的主要功能。

image.png

代码解读

初步阅读,大致可以看出函数的主要功能在于将其他类型数据转化为数组

image (1).png

但是没明白Symbol.iterator这个API的主要功能,于是去MDN搜了一下,结合参考ES6标准入门(es6.ruanyifeng.com/#docs/itera…)可知:

Symbol.iterator 为每一个对象定义了默认的迭代器。该迭代器可以被 for...of 循环使用

[...value]表示返回value的每一项展开的数组

可以理解为判断某个数据结构是否部署 Iterator 接口

只要某个数据结构部署了 Iterator 接口,就可以对它使用扩展运算符,将其转换为数组

一个数据结构只要部署了Symbol.iterator属性,就被视为具有 iterator 接口,就可以用for...of循环遍历它的成员

二、  单元测试

再回到package.json文件

image (2).png

可知这个包有三个依赖:xo(代码格式化)、ava(并行测试)、tsd(ts类型定义)

执行测试命令:

npm run test

即同时运行代码格式化命令、测试命令及ts类型定义测试命令

image (3).png

运行完还有十几个报错

image (4).png

是因为tsd包引起的,(在test命令中去掉tsd后报错就消失)但是看了半天看不懂ts只能被迫放弃,希望有大佬解决这个问题后戳戳我

三、  总结

收获:

1.  了解package.json文件各属性

2.  Symbol.iterator方法及iterator迭代器使用

3.  xo、ava、tsd包

问题:

未解决运行tsd报错问题