OSS TanbouSign in with GitHub

reuse TypeScript type transformations that go beyond the built-in utility types

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
17,433
Primary language
TypeScript
License
CC0-1.0
Repository last updated
Sep 18, 2026
On this page

Overview

Type-fest is a collection of reusable TypeScript utility types. Types such as Except, Merge, ReadonlyDeep, Tagged, and Get help applications and libraries reshape objects and unions without reimplementing advanced type-level logic.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Reuse utilities for object, union, and deep transformations

The v5.10.0 README exposes utilities including Except, Merge, MergeDeep, PartialDeep, ReadonlyDeep, and RequireExactlyOne, covering transformations that are cumbersome to rebuild from the standard utility types alone.

Sources: [1]

Use Tagged, Exact, Get, and similar types in API design

The collection also includes types for tagged values, exact object shapes, and nested property lookup, which can help structure domain models and public library APIs.

Sources: [1]

Import types without adding application runtime behavior

The package primarily exports type definitions, and the README examples use import type. For runtime helper functions, the README points readers to the separate ts-extras package.

Sources: [1][2]

Best fit

Fits TypeScript frontends and libraries with repeated advanced type transformations

It is useful when API responses, form models, configuration objects, or public library types repeatedly need deep optionality, selective keys, mutually exclusive properties, or tagged values.

Sources: [1]

Before adoption

v5.10.0 requires TypeScript 5.9+, ESM, and strict mode

The README requires TypeScript >=5.9, ESM, and strict: true. Package metadata also declares Node.js >=20, so older build toolchains should be checked before adoption.

Sources: [1][2]

It does not provide runtime validation or transformation

Type-fest is a type utility collection, not a runtime schema validator or data transformation library. Runtime validation of external inputs still requires a separate tool.

Sources: [1][2]

Official sources

  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)
Supplemental curator note

Version 5.10.0 assumes TypeScript 5.9+, ESM, and strict mode. It is a type-only utility library, so keep it separate from runtime schema validation tools used for external inputs.

Try it in 3 steps

  1. 1

    Install Type-fest 5.10.0 with TypeScript 5.9.2

    Create an isolated ESM project and pin Type-fest plus a TypeScript 5.9 release that satisfies the README requirements.

    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

    Enable strict mode and use the Except utility type

    Enable the documented strict requirement and import the representative Except utility as a type-only dependency.

    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

    Type-check the project

    Run the TypeScript compiler without emitting JavaScript and confirm that Type-fest's declarations resolve in the project.

    npx tsc
Check the official README

Growth

Growth trends · Last 30 days

17,433 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
7
Open PRs
48

Development activity is still being collected.

Built with

Categories and tags

Categories

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • typescript-definitions
  • typescript
  • types
  • utilities
  • npm-package
Stars
17,433
Forks
744
Watchers
57
Open issues
177
Contributors
213
Owner type
User
Primary language
TypeScript
License
CC0-1.0
Repository last updated
Sep 18, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?