如何为 TS 类型写单测呢?
最简单的办法就是试探性访问属性,如果该属性访问不到自然会在异常时出现错误,如:
import { myLib } from "code";
myLib.update; // 正确
如上所示,如果 myLib 没有正确的开放 update 属性将会提示错误。但这种单测并不是我们要讲的类型。想一想,如果我们只开放 .update API 给用户,但框架内部可以使用全量的 .update、.add、.remove 方法,如何验证框架没有把不必要的属性也开放给了用户呢?
一种做法是直接访问类型提示,此时会出现错误下划线:
myLib.add
~~~ // Property 'add' does not exist on type MyLib
此时说明代码逻辑正常,但却抛出了 ts 错误,这可能会阻塞 CI 流程,而且我们也无从判断这个报错是否 “实际山是逻辑正确的表现”,所以 “不能出现某个属性” 就不能以直接访问属性的方式实现了,我们要做一些曲线方案。
利用特殊类型方法
我们可以利用 extends 构造三元类型表达式,逻辑是如果 myLib 拥有 .add 属性就返回 a 类型,否则返回 b 类型。因为 myLib 不该提供 .add 属性,所以下一步判断该新

最低0.47元/天 解锁文章
2139

被折叠的 条评论
为什么被折叠?



