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:型チェックとユニットテストの関係を理解する

コメント