OSS探訪

TS-Pattern — TypeScriptの分岐をpatternとexhaustive checkingで表現する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
15,167
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/11

概要

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が増えた際の見落としを検出できます。

出典:[2][3]

複雑な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時間も測定してください。

出典:[2][3]

参考にした公式資料

  1. [1]gvergnaud/ts-pattern repository(2026-09-21)
  2. [2]TS-Pattern README(2026-09-21)
  3. [3]ts-pattern package(2026-09-21)
  4. [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. 1

    TS-Patternを追加

    公式READMEのnpm手順でpackageを追加します。

    npm install ts-pattern
  2. 2

    unionをmatchへ渡す

    discriminated unionのshapeをpatternとして分岐します。

    match(result).with({ type: 'error' }, handleError).with({ type: 'ok' }, handleOk)
  3. 3

    exhaustive checkingを有効化

    未処理caseがあればTypeScript errorになることを確認します。

    .exhaustive()
公式READMEで確認

成長

成長の推移 · 直近30日

15,167 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
24

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • pattern-matching
  • typescript
  • ts
  • pattern
  • matching
  • inference
  • type-inference
  • exhaustive
  • conditions
  • branching
  • javascript
Stars
15,167
Forks
172
Watchers
31
Open Issues
53
Contributors
26
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/09/11

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

TS-Patternとは?TypeScriptでexhaustive pattern matching | OSS探訪