Skip to content
A collection of essential TypeScript types
Branch: master
Clone or download
Latest commit a8ae3db May 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Upgrade `tsd` dev dependency Mar 20, 2019
media Init Mar 13, 2019
source Add `esnext` lib reference for BigInt (#37) May 15, 2019
test-d Upgrade dev dependencies May 12, 2019
.editorconfig Init Mar 13, 2019
.gitattributes Init Mar 13, 2019
.gitignore Init Mar 13, 2019
.npmrc Init Mar 13, 2019
.travis.yml Add Node.js 12 to testing (#32) Apr 26, 2019
index.d.ts Add `ReadonlyDeep` type (#34) May 12, 2019
license Init Mar 13, 2019
license-cc0 Init Mar 13, 2019
package.json 0.5.1 May 15, 2019 Add `ReadonlyDeep` type (#34) May 12, 2019
tsconfig.json Init Mar 13, 2019


A collection of essential TypeScript types

Build Status

Many of the types here should have been built-in. You can help by suggesting some of them to the TypeScript project.

Either add this package as a dependency or copy-paste the needed types. No credit required. 👌

PR welcome for additional commonly needed types and docs improvements. Read the contributing guidelines first.


$ npm install type-fest


import {Omit} from 'type-fest';

type Foo = {
	unicorn: string;
	rainbow: boolean;

type FooWithoutRainbow = Omit<Foo, 'rainbow'>;
//=> {unicorn: string}


Click the type names for complete docs.



  • Omit - Create a type from an object type without certain keys.
  • Mutable - Convert an object with readonly properties into a mutable object. Inverse of Readonly<T>.
  • Merge - Merge two types into a new type. Keys of the second type overrides keys of the first type.
  • MergeExclusive - Create a type that has mutually exclusive properties.
  • RequireAtLeastOne - Create a type that requires at least one of the given properties.
  • ReadonlyDeep - Create a deeply immutable version of a object/Map/Set/Array type.
  • LiteralUnion - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for Microsoft/TypeScript#29729.


Declined types

If we decline a type addition, we will make sure to document the better solution here.

  • Diff and Spread - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.


Built-in types

There are many advanced types most users don't know about.

You can find some examples in the TypeScript docs.



(MIT OR CC0-1.0)

You can’t perform that action at this time.