[若川视野 x 源码共读] 第33期 | arrify

173 阅读1分钟

工程结构

依赖
  1. xo: 代码格式校验
  • 预设了一些 eslint 规则, 用于格式化 js/ts 文件.
  • 作者也提供了对应的插件 vscode-linter-xo, 方便和 IDE 集成.
  1. ava: 单元测试
  • 利用 Node.js 异步的特性使得 IO 可以并行, 从而让测试文件在不同的进程里并行运行.
  1. tsd: ts 类型测试
  • expectError: 期望类型出错
  • expectAssignable: 期望类型是兼容的
  • expectType: 期望两个类型是相等的
CI
  1. Github Actions

  2. 配置文件说明(我在这里添加了注释)

  1. 在这里找到你想使用的Actions

代码

ts
  1. Iterable<T>: 迭代器类型
const c = new Set<string>;
type C<T> = T extends Iterable<infer P> ? P :never;
type d = C<typeof c> // string
js
  1. Symbol.iterator: 检查对象的Symbol.iterator属性,来判断对象是否可迭代
	if (typeof value[Symbol.iterator] === 'function') {
		return [...value];
	}

未解决问题

  • .gitattributes的实际用途,有小伙伴有用到过这个吗?