NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4019 most downloaded on npm
All essential TypeScript types in one place
Last release 4 months ago
03 Jun 2026
Release timing varies
gaps range from 4 weeks to 11 months
Most releases are documented
notes for 44 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
65 releases · first in 2018
4ad58f2: Added PublicInterface utility type
PublicInterface<Type> utility typee9b7366: Deprecated NonNever and renamed it to OmitNeverProperties
NonUnion utility typeNonNever and renamed it to OmitNeverPropertiesRequireAtLeastOne utility typeUnionKeys utility typeRequireAtMostOne utility typeExact and renamed it to IsExactJsonValue, JsonPrimitive, JsonObject and JsonArray utility typesOverrideDeepReadonlyOptions to DeepReadonly<Type, OverrideDeepReadonlyOptions?> to allow configuring
passthrough behaviour for built-in types (Date, Error, RegExp) per use-casePrettify<Type> type when Type is a class with private/protected membersIsTuple<Type> type when Type is a tuple with both optional elements and a rest element, like
[string?, ...number[]]NonEmptyArray and renamed it to AnyNonEmptyArrayDeepPartial<Type> when Type is an array containing rest element, like [string, ...number[]]Iterable support for DeepReadonly and DeepWritableUnionKeysUnionToIntersectionOne column per quarter.
8ae038e: Fix DeepReadonly & DeepRequired types when Type is an array containing rest element, like [string, ...number[]]
DeepReadonly<Type> & DeepRequired<Type> types when Type is an array containing rest element, like
[string, ...number[]]39d315e: Implement DeepMarkRequired utility type that constructs a type by picking all properties from type Type where properties by paths KeyPathUnio
DeepMarkRequired utility type that constructs a type by picking all properties from type Type
where properties by paths KeyPathUnion are set as requiredDeepMarkOptional utility type that constructs a type by picking all properties from type Type
where properties by paths KeyPathUnion are set as optionalecb490b: Head no longer includes an extraneous | undefined when instantiated with a union of empty and non-empty tuple, like [] | [1, 2]
Head<Type> no longer includes an extraneous | undefined when instantiated with a union of empty and
non-empty tuple, like [] | [1, 2]MarkOptional<Type, Keys> is now assignable to Partial<Type>Tail<Type> now works with readonly arrays and also correctly returns the tail for tuples with all optional
members. Additionally, it now acts as an identity for non-tuple arrays, i.e., it returns Type when Type is a
non-tuple array, such as string[], number[], etc.MarkRequired<Type, Keys> & MarkWritable<Type, Keys> types when Keys is anyMark-* and Merge typescc7b838: ReadonlyKeys and WritableKeys now return only the readonly and writable keys, respectively, for arrays and tuples
ReadonlyKeys<Type> and WritableKeys<Type> now return only the readonly and writable keys, respectively,
for arrays and tuplesPrettify<Type> returns the same type when the type parameter is a functionOptionalKeys<Type> returns never for primitives and returns only optional indices for arrays and tuplesPaths performance by limiting the depth of paths to 7 (default)Paths<Type, { anyArrayIndexAccessor: '*' }>, a string literal representing a catch-all or "wildcard"
when indexing on arrays.490712c: Deprecated DictionaryValues in favour of ValueOf
DictionaryValues in favour of ValueOfPathValuehttps://github.com/ts-essentials/ts-essentials/commit/365612c0de7f32d203552861d8431986c0d291c4: Use key remapping in PickKeys, OmitProperties and Pick
PickKeys, OmitProperties and PickProperties that reduced the number of
instantiations by ~20-40% on averageb127a8a: Use TypeScript@^4.2.0 because of excessively deep and possibly infinite type instantiation limitation for PathValue and Paths
PathValue and PathsStrictDeepOmit and StrictDeepPick that support generic type and removed generic constraint on the
second type parameter of DeepOmit and DeepPickPaths and PathValue to access object properties, array/tuple indicesCONVENTIONS.md for reliable, consistent and predictable developmentDeepRequired.isExactf88f757: Add TypeScript 5.3 and 5.4 support (fix a bug with WeakKey for WeakSet and WeakMap)
WeakKey for WeakSet and WeakMap)bc3c474: Fix regression in TypeScript 5.1 with CamelCase
ddb1bea: Make typescript optional as a peer dependency
typescript optional as a peer dependency8761667: DeepPartial, DeepRequired, DeepWritable and DeepReadonly can update structure of Error or interface which extends Error
DeepPartial, DeepRequired, DeepWritable and DeepReadonly can update structure of Error or interface
which extends ErrorisTuple, DeepNullable, DeepPartial, and DeepUndefinable0c215b9: Changed the Tuple's type implementation to only use a tuple type (instead of a union of a tuple type and an array type).
Tuple's type implementation to only use a tuple type (instead of a union of a tuple type and an
array type).__OPAQUE_TYPE__ in Opaque that cannot be used outside of ts-essentialsNonEmptyObject<T> to not allow primitivesValueOf utility type to cover the edge casesa86c5b5: Add ReadonlyArrayOrSingle which is a counterpart to ArrayOrSingle with the array being readonly
ReadonlyArrayOrSingle which is a counterpart to ArrayOrSingle with the array being readonlycreateFactoryWithConstraintTail to use variadic tuple typeDeepReadonly for a union with an array of itselfMarkRequired, MarkOptional, MarkReadonly and MarkWritableStrictExtract usage for TypeScript@^4.6.05aa1f26: Add NonEmptyArray which ensures an array to have at least one item
NonEmptyArray which ensures an array to have at least one itemStrictExclude, a stricter version of ExcludeMarkWritable which unsets readonly for specified keysMarkReadonly which sets readonly for specific keysDeepPartial for normal arrays08adddd: Remove postinstall script
postinstall scriptbf05a7e: Fix DeepPick and DeepOmit for project with TypeScript 4.5 or newer
DeepPick and DeepOmit for project with TypeScript 4.5 or newerDeepOmit and DeepPick for WeakMap in TypeScript 4.1 and 4.2a2ac470: Add IsAny which returns true if it's any, otherwise false
IsAny which returns true if it's any, otherwise falseArrayOrSingleDeepPick with the validation of the filterCamelCase and DeepCamelCaseProperties for converting it from other casesDeepOmit and DeepPickDeepOmit by removing 4 intersections for objects and applying generic restriction for FilterPropertyKey with KeyofBase to tolerate keyofStringsOnly option in TypeScriptOptionalKeys and RequiredKeys for union of objectsaa879ca: Use TypeScript@^4.1.0 because of introduced recursive conditional types
IsUnknown which returns true if it's unknown, otherwise falseIsNever which returns true if it's never, otherwise falseisExact function7bf4fdb: Make DeepRequired as recursive Required without removing null and undefined
DeepRequired as recursive Required without removing null and undefinedReadonlySet and ReadonlyMap in DeepUndefinable with other sets and mapsDeepPartial and Buildable for unknownReadonlySet and ReadonlyMap in DeepNullable with other sets and mapsDeepRequired and DeepNonNullable in READMEStrictOmitDictionaryValues for SafeDictionary with number and string literals keysStrictOmit returns never for arrays and tuples⚠️ Warning: isn't working with TypeScript@4.0.x, please either downgrade to v7.0.3 or upgrade to TypeScript@^4.1.0
ab6f68e: Add StrictExtract to check the original structure of type and extract it correctly
typescript@^4.0.0StrictExtract to check the original structure of type and extract it correctlyMergeN: you can pass tuple of size N and it will recursively apply MergeDeepReadonly support for unknown typeIsTuple now works with any tuple lengthOpaque⚠️ Warning: isn't working with TypeScript@4.0.x, please either downgrade to v7.0.3 or upgrade to TypeScript@^4.1.0
f917f9b: Refactor Opaque, now __TYPE__ is not accessible at all
__TYPE__ is not accessible at allNothing published for this version
Allow readonly arrays in ElementOf https://github.com/krzkaczor/ts-essentials/pull/181
ElementOf https://github.com/krzkaczor/ts-essentials/pull/181Opaque change order of arguments [BREAKING CHANGE] by @krzkaczor
Opaque change order of arguments [BREAKING CHANGE] by @krzkaczorSafeDictionary make it work with finite types in an expected way [BREAKING CHANGE] by @akwodkiewiczNewable type by @krzkaczoradd DeepUndefinable by @akwodkiewicz
DeepUndefinable by @akwodkiewiczExport RequiredKeys and OptionalKeys by @bbarry
ElementOf by @quezakRequiredKeys and OptionalKeys by @bbarryDeepOmit optional members by @bbarryNothing published for this version
- add Head and Tail types - format build artifacts (dust) - simplify Merge implementation
Head and Tail typesMerge implementationNothing published for this version
add value argument to SafeDictionary by @quezak
SafeDictionary by @quezakNothing published for this version
Tweak support for ReadonlyMaps and ReadonlySets ⚠️ BREAKING by @mikhailswift
changed the way DeepPartial work on arrays: https://github.com/krzkaczor/ts-essentials/issues/112
arrays: https://github.com/krzkaczor/ts-essentials/issues/112remove deprecated stuff by @krzkaczor
Nothing published for this version
Nothing published for this version
Nothing published for this version
- NonEmptyObject by @EduardoRFS
NonEmptyObject by @EduardoRFSadd PickProperties by @EduardoRFS
improve all deep types @lucifer1004
⚠️ Breaking change!
Nothing published for this version
Nothing published for this version
DeepPartial improvements by @lucifer1004
DeepPartial improvements by @lucifer1004Primitive type extended by @lucifer1004Nothing published for this version
Nothing published for this version
new MarkRequired type by @quezak
MarkRequired type by @quezakmake DeepReadonly work with unknown by @ThomasdenH
unknown by @ThomasdenHAsyncOrSync type by @krzkaczorbetter tests for DeepReadonly by @yxliang01
AsyncOrSync type by @krzkaczorDeepReadonly by @yxliang01fix exported typings by @yxliang01
add OmitProperties type by @macbem
add DeepWritable type @krzkaczor
Nothing published for this version
make ReadonlyArray work with DeepReadonly @MichaelTontchev
removed NonNullable type @Andarist (breaking change)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →