type-fest
5.10.0 · 17 Sep 2026(MIT OR CC0-1.0)528.8M / weekRepositoryHomepagenpmAtom feed
5.10.0 is the newest release of 5.x.
In short
11 breaking1 deprecated25 new9 fixed
- breaking
This package is now pure ESM. Please read this.
- breaking
Require TypeScript 5.9 b5b0214
- breaking
Require Node.js 20 cc2b0f2
- breaking
Reminder:
type-festrequiresstrict: truein your tsconfig. - breaking
StringKeyOf: Rename toKeyAsStringe492c9c - breaking
ArrayTail: EnablepreserveReadonlyby default and remove the option b34b1d8 - breaking
CamelCase/CamelCasedProperties/CamelCasedPropertiesDeep/PascalCase/PascalCasedProperties/PascalCasedPropertiesDeep: DisablepreserveConsecutiveUppercaseby default 8226c1b - breaking
PartialDeep: DisableallowUndefinedInNonTupleArraysby default b3c4524
Release note
Breaking
- breaking
This package is now pure ESM. Please read this.
- breaking
Require TypeScript 5.9 b5b0214
- breaking
Require Node.js 20 cc2b0f2
- breaking
Reminder:
type-festrequiresstrict: truein your tsconfig. - breaking
StringKeyOf: Rename toKeyAsStringe492c9c - breaking
ArrayTail: EnablepreserveReadonlyby default and remove the option b34b1d8 - breaking
CamelCase/CamelCasedProperties/CamelCasedPropertiesDeep/PascalCase/PascalCasedProperties/PascalCasedPropertiesDeep: DisablepreserveConsecutiveUppercaseby default 8226c1bThis aligns it with the general JavaScript naming convention.
- breaking
PartialDeep: DisableallowUndefinedInNonTupleArraysby default b3c4524 - breaking
- breaking
- breaking
ObservableLike: Move to sub-export 2a1072e - deprecated
New types
Alphanumeric— Single alphanumeric character (A–Z,a–z,0–9). 484e030AllExtend— Evaluates totrueif every element of a tuple/array extendsU. c8c6d55ConditionalSimplify— Simplifies a type’s unions/intersections with opt-in controls. b7a4771ConditionalSimplifyDeep— Deep version ofConditionalSimplifythat recurses into objects. b7a4771DigitCharacter— Single ASCII digit character (0–9). 484e030ExcludeStrict— Non-distributive, stricter variant ofExclude<T, U>. e6f62a2ExtendsStrict— Non-distributiveA extends Bcheck. d71242aExtractStrict— Non-distributive, stricter variant ofExtract<T, U>. 98d24faIsLowercase— Evaluates totrueif a string literal is all lowercase. afe132cIsNullable— Evaluates totrueifTincludesnull. 5067e25IsOptional— Evaluates totrueifTincludesundefined. 5067e25IsOptionalKeyOf— Evaluates totrueif propertyKofTis optional. 93728b5IsReadonlyKeyOf— Evaluates totrueif propertyKofTis readonly. 93728b5IsRequiredKeyOf— Evaluates totrueif propertyKofTis required. 93728b5IsUndefined— Evaluates totrueif the type is exactlyundefined. f7bc576IsUppercase— Evaluates totrueif a string literal is all uppercase. afe132cLowercaseLetter— Single lowercase Latin letter (a–z). 484e030RemovePrefix— Removes a specified prefix from a string literal. 18a1c04UppercaseLetter— Single uppercase Latin letter (A–Z). 484e030
Improvements
SetRequired/SetOptional/SetReadonly: Handle functions with properties a5e45d4Schema: Preserve arrays/remove extraneous unions 8a96def; dropundefinedforrecurseIntoArrays1cb955bReadonlyKeysOf/WritableKeysOf: Addobjectconstraint a6efbe0TsConfigJson: Add TypeScript 5.9 fields d2bda94
Fixes
IsStringLiteral: Fix uncollapsed unions, and tagged types eb37799 / d1b35c7ConditionalKeys: Fix behavior with arrays and unions 4d7cc50RequiredDeep: Fix withundefinedbfcdbc4Split: Fix template strings ending with interpolation 853b881Fix
UnionMinandUnionMaxd52d5e7
Meta