数字不只是数字:如何让编译器在编译期捕获单位错误
该传秒的地方传了毫秒,这种 bug 能躲过所有测试。下面介绍如何将单位直接编码进 TypeScript 的类型系统,让混用在编译阶段就报错,且运行时零开销。
某个函数的 timeout 参数要求毫秒,你传了 。另一个函数要求秒,你传了 。中间某个地方,你调用了 ,结果整整一小时二十三分钟什么也没发生。 TypeScript 在这里帮不了你。 和 都是 。编译器分辨不出米和英尺、摄氏和华氏、时间戳和时长的区别。你的测试套件大概率也抓不到,因为计算本身是对的,错的是单位。…