概要
TS-Patternは、TypeScriptのunion、object、array、tuple等をpattern matchingで分岐するlibraryです。`.with()`でcaseを並べ、`.exhaustive()`で未処理caseをcompile時に検出できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
objectやunionの形をpatternとして直接matchする
nested object、tuple、primitive等のshapeへ直接patternを書き、handler内ではmatch結果に応じて型がnarrowingされます。
出典:[2]
`.exhaustive()`でcase漏れを型checkする
discriminated union等のすべてのcaseを処理したことをcompile時に確認し、将来caseが増えた際の見落としを検出できます。
複雑なstate machineやunion分岐を読みやすく保ちたい場合に
nested switchやif/elseが増えるstate reducer、API result、domain model等の分岐に向きます。
出典:[2]
高度な型推論によるcompile costを測る
runtime bundleは小さい一方、pattern matchingの型推論はTypeScript compiler側で処理されます。大規模なpatternを大量に使う場合はtype-check時間も測定してください。
参考にした公式資料
- [1]gvergnaud/ts-pattern repository(2026-09-21)
- [2]TS-Pattern README(2026-09-21)
- [3]ts-pattern package(2026-09-21)
- [4]TS-Pattern MIT license(2026-09-21)
編集部からの補足
現在のpackageは5.9.0です。TS-Patternはswitch文のsyntax sugarではなく、nested object・tuple・union等の形をpatternとして表現し、型narrowingとcase網羅性を利用できます。一方で高度な型計算を使うため、非常に大きなpatternではTypeScript compile時間も確認してください。
3ステップで試す
- 1
TS-Patternを追加
公式READMEのnpm手順でpackageを追加します。
npm install ts-pattern - 2
unionをmatchへ渡す
discriminated unionのshapeをpatternとして分岐します。
match(result).with({ type: 'error' }, handleError).with({ type: 'ok' }, handleOk) - 3
exhaustive checkingを有効化
未処理caseがあればTypeScript errorになることを確認します。
.exhaustive()
成長
成長の推移 · 直近30日
15,167 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 24
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Visual Studio Code192,752 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
Visual Studio Codeの基盤となるMITライセンスのCode - OSSリポジトリ。
TypeScript - Supabase110,464 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
Postgresを中心にAuth・API・Realtime・Storage・Functionsをまとめ、Hosted/local/self-hostを選べる開発プラットフォーム。
TypeScript - Pi107,901 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
最小構成から拡張できるAIコーディングエージェント用ハーネス。
TypeScript - Tailwind CSS97,630 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
ユーティリティクラスを組み合わせて独自のユーザーインターフェースを作るCSSフレームワーク。
TypeScript - Playwright96,435 Stars
共通タグ 1件 · 共通カテゴリ 1件 · 同じ言語
Chromium・Firefox・WebKitのE2Eテスト、script、CLI、MCPを一つのAPIで扱うWeb自動化基盤。
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。