mcpField
T
type-checking-vs-testing

type-checking-vs-testing

github.com/marius-townhouse测试与质量644 次安装38 周前更新
代码仓库

关于 type-checking-vs-testing

这项指导技能说明 TypeScript 类型检查与单元测试分别能发现哪些错误,帮助开发者结合使用两者,而非用类型取代测试。

主要功能

  1. 01区分编译期与运行期错误
  2. 02说明类型与测试的互补作用
  3. 03涵盖逻辑错误和边界情况

适用场景

  1. 01决定何时依赖类型或测试
  2. 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