关于 type-checking-vs-testing
这项指导技能说明 TypeScript 类型检查与单元测试分别能发现哪些错误,帮助开发者结合使用两者,而非用类型取代测试。
主要功能
- 01区分编译期与运行期错误
- 02说明类型与测试的互补作用
- 03涵盖逻辑错误和边界情况
适用场景
- 01决定何时依赖类型或测试
- 02构建覆盖边界情况的测试套件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ marius-townhouse/ effective-typescript-skills --skill type-checking-vs-testing安装后在 Claude Code 中输入/type-checking-vs-testing确认已加载。
详细介绍
理解类型检查与单元测试之间的关系
概述
类型检查和单元测试会捕获不同类型的错误。类型检查会在编译时捕获类型不匹配。单元测试会在运行时捕获逻辑错误和边界情况。两者相辅相成——类型可以减少对某些测试的需求,但不能取代逻辑测试。
何时使用此技能
- 决定使用类型还是测试
- 捕获逻辑错误
- 测试边界情况
- 构建测试套件
- 验证假设
铁律
使用类型在编译时捕获类型错误。使用测试在运行时捕获逻辑错误和边界情况。两者相辅相成。
示例
// Type checking catches:
function add(a: number, b: number): number {
return a + b;
}
add(1, '2'); // Compile error - types don't match
// Tests catch:
function divide(a: number, b: number): number {
return a / b; // Logic error: no check for division by zero
}
// Type system can't catch this - need tests:
test('divide by zero', () => {
expect(() => divide(1, 0)).toThrow();
});
参考资料
- Dan Vanderkam 著《Effective TypeScript》第 2 版
- 条目 77:理解类型检查与单元测试之间的关系
评论
支持 Markdown