OSS探訪GitHubでログイン

標準Utility Typeでは足りない型変換を再利用できるTypeScript型ライブラリ

スコアの見方

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

Stars
17,433
主要言語
TypeScript
ライセンス
CC0-1.0
リポジトリ最終更新
2026/09/18
ページ内ナビ

概要

Type-festは、TypeScriptの型システムだけで使う汎用utility type集です。Except、Merge、ReadonlyDeep、Tagged、Getなど、objectやunionを組み替える型をpackageからimportし、applicationやlibraryの型定義を再利用しやすくします。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

object・union・deep変換向けのutility typeをまとめて使う

v5.10.0のREADMEはExcept、Merge、MergeDeep、PartialDeep、ReadonlyDeep、RequireExactlyOneなど、多数の型変換を用途別に公開しています。標準Utility Typeだけでは表現しにくい型操作を自前で繰り返し実装せずに済みます。

出典:[1]

Tagged・Exact・GetなどAPI設計向けの型も選べる

Taggedでbrandに近い型を作る、Exactで余分なpropertyを制限する、Getでnested propertyの型をkey pathから取得するなど、domain modelや公開APIの型を組み立てるutilityも含まれます。

出典:[1]

実行時codeを増やさず型だけをimportする

packageは型定義を主にexportし、READMEの例もimport typeでutilityを利用します。runtime helperが必要な用途については、READMEが別packageのts-extrasを案内しています。

出典:[1][2]

向いている用途

frontendやlibraryで複雑な型変換を共通部品にしたい場合に向く

API response、form model、設定object、公開libraryの型などで、deep optional化、keyの選択、排他的property、brand表現を複数箇所から再利用したいTypeScript codebaseに適します。

出典:[1]

導入前の確認

v5.10.0はTypeScript 5.9以上・ESM・strict設定を前提にする

READMEはTypeScript >=5.9、ESM、strict: trueを必須条件として示しています。package metadataはNode.js >=20をengineとして宣言するため、古いtoolchainへ追加する場合は先にbuild環境を確認してください。

出典:[1][2]

runtime validationや変換処理は提供しない

Type-festは型utility集であり、外部入力を実行時に検証したりdataを変換したりするlibraryではありません。API responseのvalidation等が必要ならruntime schema libraryを別途組み合わせる必要があります。

出典:[1][2]

参考にした公式資料

  1. [1]Type-fest v5.10.0 README(2026-10-05)
  2. [2]Type-fest v5.10.0 package metadata(2026-10-05)
  3. [3]Type-fest v5.10.0 release(2026-10-05)
  4. [4]Type-fest MIT license(2026-10-05)
  5. [5]Type-fest CC0 license(2026-10-05)
編集部からの補足

v5.10.0はTypeScript 5.9以上・ESM・strict設定を前提にします。型だけを提供するlibraryなので、外部入力のruntime validationが必要な箇所ではZod等のschema libraryとは役割を分けてください。

3ステップで試す

  1. 1

    Type-fest 5.10.0とTypeScript 5.9.2を導入する

    READMEの要件に合わせ、ESMの一時projectへType-festとTypeScript 5.9系を固定して導入します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/type-fest.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm pkg set type=module && npm install --save-exact type-fest@5.10.0 && npm install --save-exact --save-dev typescript@5.9.2
  2. 2

    strict設定とExceptを使う確認用ファイルを作る

    READMEが求めるstrict設定を有効にし、代表的なutility typeであるExceptを型だけimportして使います。

    printf "%s\n" '{"compilerOptions":{"strict":true,"noEmit":true,"module":"NodeNext","moduleResolution":"NodeNext","target":"ES2022"}}' > tsconfig.json && printf "%s\n" "import type {Except} from 'type-fest';" "type User = {id: string; secret: string};" "const publicUser: Except<User, 'secret'> = {id: '1'};" "void publicUser;" > index.ts
  3. 3

    TypeScript compilerで型検査する

    runtimeを起動せず型検査だけを実行し、Type-festの型定義がprojectで解決されることを確認します。

    npx tsc
公式READMEで確認

成長

成長の推移 · 直近30日

17,433 Stars

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

開発アクティビティ

直近90日・週次

Commit(直近30日)
7
Open PR
48

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

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

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

GitHub Topics

  • typescript-definitions
  • typescript
  • types
  • utilities
  • npm-package
Stars
17,433
Forks
744
Watchers
57
Open Issues
177
Contributors
213
所有者種別
User
主要言語
TypeScript
ライセンス
CC0-1.0
リポジトリ最終更新
2026/09/18

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

情報の誤りを報告

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

このページを読んで、次に何をすればよいか分かりましたか?