Skip to content

better-scroll类型测试实践

Published: at 00:00

随着 Typescript 飞速发展,目前已经迎来 4.x 版本。许多项目都在陆续的登上 Typescript 这班列车,当然 better-scroll 也不例外,better-scroll 在近期也迎来了 2.0 版本,并且使用 Typescript 进行了重构。我们在享受 Typescript 优良类型系统的同时,也在面临着一个问题:我们写的类型有问题吗,输出给用户使用的类型是正确的吗?

这里你可能会有一个疑问 🤔️:为什么写的类型会有问题,只要写代码的时候类型写对,输出的类型会有问题吗?

正常情况下确实是没有问题的,由于 better-scroll 在 2.0 新增了插件系统,把 1.x 中耦合在核心滚动中的插件全部都抽离出来,如果你使用过 better-scroll 肯定只有在 bs 实例上是可以访问到插件的属性和方法的,因此在 2.0 上要想在 bs 实例上访问到插件的属性和方法,就必须在插件中将属性和方法声明合并到 bs 实例上。这时就会萌生一个疑问:插件的属性和方法合没合上去呢,合对了吗?所以就需要对类型进行测试了。

在开始测试之前我们需要考虑两个问题:

要测什么?

看过上面的疑问可能已经只要要测什么了,在这里重点说一下。

对于一些简单类型,实际上是没有必要测试的,编辑器已经做的很好了。

function add(a: number, b: number) {
  return a + b;
}

add 函数代码写在这,很明显用肉眼就能看出来参数类型是什么,返回值类型是什么,再去写这样的测试就没有必要了,有点浪费精力和时间了。

那么要测什么呢?我总结有以下几点:

怎么测?

tsd 测试法

dts-jest 测试法

自研断言测试法