Socket
Socket
Sign inDemoInstall

ts-essentials

Package Overview
Dependencies
1
Maintainers
3
Versions
56
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    ts-essentials

All essential TypeScript types in one place


Version published
Weekly downloads
1.9M
decreased by-2.49%
Maintainers
3
Install size
130 kB
Created
Weekly downloads
ย 

Package description

What is ts-essentials?

The ts-essentials package provides a set of TypeScript types to enhance the TypeScript typing experience, offering more strict and powerful type definitions. It includes utility types, type guards, and other helpers that are not available in the standard TypeScript library.

What are ts-essentials's main functionalities?

DeepReadonly

Makes all properties of an object type recursively readonly. It is useful for defining immutable state or configurations.

type MyObject = { a: { b: { c: number } } };\nconst readonlyObject: DeepReadonly<MyObject> = { a: { b: { c: 1 } } };\n// readonlyObject.a.b.c = 2; // Error: Cannot assign to 'c' because it is a read-only property.

Writable

Converts a readonly object into a writable one, removing the readonly modifier from all properties.

type MyReadOnlyObject = { readonly a: number };\nconst writable: Writable<MyReadOnlyObject> = { a: 1 };\nwritable.a = 2; // No error, 'a' is writable.

StrictOmit

Creates a type by omitting the keys provided from the given object type, ensuring that only keys that exist on the type are specified.

interface MyObject { a: number; b: string; c: boolean; }\nconst myObject: StrictOmit<MyObject, 'a' | 'b'> = { c: true };\n// myObject.a or myObject.b does not exist.

LiteralUnion

Allows for a union type to include specific literal types as well as additional types, typically used for string literals with an escape hatch for other values.

type Direction = LiteralUnion<'left' | 'right', string>;\nconst direction: Direction = 'any string'; // No error, can be 'left', 'right', or any other string.

MarkRequired

Marks certain properties of an object type as required, changing them from optional to mandatory.

type MyObject = { a?: number; b: string; }\nconst required: MarkRequired<MyObject, 'a'> = { a: 1, b: 'string' };\n// Property 'a' is required in 'required'.

Other packages similar to ts-essentials

Changelog

Source

9.4.2

Patch Changes

  • f88f757: Add TypeScript 5.3 and 5.4 support (fix a bug with WeakKey for WeakSet and WeakMap)

Readme

Source

ts-essentials

ts-essentials

All essential TypeScript types in one place ๐Ÿค™

Downloads Build status Software License All Contributors codechecks.io

Install

npm install --save-dev ts-essentials

๐Ÿ‘‰ We require typescript>=4.1. If you're looking for support for older TS versions, please have a look at the TypeScript dependency table

๐Ÿ‘‰ As we really want types to be stricter, we require enabled strictNullChecks in your project

API

ts-essentials is a set of high-quality, useful TypeScript types that make writing type-safe code easier.

Basic

Utility types

  • AsyncOrSync<Type> - Constructs a type with Type or PromiseLike<Type>
  • AsyncOrSyncType<Type> - Unwraps AsyncOrSync type
  • Dictionary<Type, Keys?> - Constructs a required object type which property keys are Keys (string by default) and which property values are Type
  • DictionaryValues<Type> - This type unwraps Dictionary value type
  • Merge<Object1, Object2> - Constructs a type by picking all properties from Object1 and Object2. Property values from Object2 override property values from Object1 when property keys are the same
  • MergeN<Tuple> - Constructs a type by merging objects with type Merge in tuple Tuple recursively
  • Newable<ReturnType> - Constructs a class type with constructor which has return type ReturnType
  • NonNever<Type> - Constructs a type by picking all properties from type Type which values don't equal to never
  • OmitProperties<Type, Value> - Constructs a type by picking all properties from type Type and removing those properties which values equal to Value
  • Opaque<Type, Token> - Constructs a type which is a subset of Type with a specified unique token Token
  • PickProperties<Type, Value> - Constructs a type by picking all properties from type Type which values equal to Value
  • SafeDictionary<Type, Keys?> - Constructs an optional object type which property keys are Keys (string by default) and which property values are Type
  • UnionToIntersection<Union> - Constructs a intersection type from union type Union
  • ValueOf<Type> - Constructs a type for type Type and equals to a primitive for primitives, array elements for arrays, function return type for functions or object property values for objects
  • XOR<Type1, Type2> - Construct a type which is assignable to either type Type1 or Type2 but not both

Mark wrapper types

  • MarkOptional<Type, Keys> - Constructs a type by picking all properties from type Type where properties Keys are set as optional, meaning they aren't required
  • MarkReadonly<Type, Keys> - Constructs a type by picking all properties from type Type where properties Keys are set to readonly, meaning they cannot be reassigned
  • MarkRequired<Type, Keys> - Constructs a type by picking all properties from type Type where properties Keys are set as required
  • MarkWritable<Type, Keys> - Constructs a type by picking all properties from type Type where properties Keys remove readonly modifier, meaning they can be reassigned

Deep wrapper types

  • Buildable<Type> - Constructs a type by combining DeepPartial and DeepWritable, meaning all properties from type Type are recursively set as non-readonly and optional, meaning they can be reassigned and aren't required
  • DeepNonNullable<Type> - Constructs a type by picking all properties from type Type recursively and exclude null and undefined property values from all of them. To make properties non-nullable on one level, use NonNullable<Type>
  • DeepNullable<Type> - Constructs a type by picking all properties from type Type recursively and include null property values for all of them
  • DeepOmit<Type, Filter> - Constructs a type by picking all properties from type Type and removing properties which values are never or true in type Filter
  • DeepPartial<Type> - Constructs a type by picking all properties from type Type recursively and setting them as optional, meaning they aren't required. To make properties optional on one level, use Partial<Type>
  • DeepPick<Type, Filter> - Constructs a type by picking set of properties, which have property values never or true in type Filter, from type Type
  • DeepReadonly<Type> - Constructs a type by picking all properties from type Type recursively and setting readonly modifier, meaning they cannot be reassigned. To make properties readonly on one level, use Readonly<Type>
  • DeepRequired<Type> - Constructs a type by picking all properties from type Type recursively and setting as required. To make properties required on one level, use Required<Type>
  • DeepUndefinable<Type> - Constructs a type by picking all properties from type Type recursively and include undefined property values for all of them
  • DeepWritable<Type> - Constructs a type by picking all properties from type Type recursively and removing readonly modifier, meaning they can be reassigned. To make properties writable on one level, use Writable<Type>

Key types

  • OptionalKeys<Type> - Constructs a union type by picking all optional properties of object type Type
  • PickKeys<Type, Value> - Constructs a union type by picking all properties of object type Type which values are assignable to type Value
  • ReadonlyKeys<Type> - Constructs a union type by picking all readonly properties of object type Type, meaning their values cannot be reassigned
  • RequiredKeys<Type> - Constructs a union type by picking all required properties of object type Type
  • WritableKeys<Type> - Constructs a union type by picking all writable properties of object type Type, meaning their values can be reassigned

Type checkers

  • Exact<Type, Shape> - Returns Type when type Type and Shape are identical. Otherwise returns never
  • IsAny<Type> - Returns true when type Type is any. Otherwise returns false
  • IsNever<Type> - Returns true when type Type is never. Otherwise returns false
  • IsUnknown<Type> - Returns true when type Type is unknown. Otherwise returns false
  • IsTuple<Type> - Returns Type when type Type is tuple. Otherwise returns never
  • NonEmptyObject<Object> - Returns Object when Object has at least one key. Otherwise returns never

Arrays and Tuples

Change case

Function types

Utility functions

โš ๏ธ Make sure you add ts-essentials to your dependencies (npm install --save ts-essentials) to avoid runtime errors

Built-in types

TypeScript provides several utility types to facilitate common type transformations. These utilities are available globally.

  • Awaited<Type> - This type is meant to model operations like await in async functions, or the .then() method on Promises - specifically, the way that they recursively unwrap Promises
  • Capitalize<StringType> - Converts the first character in the string to an uppercase equivalent
  • ConstructParameters<Type> - Constructs a tuple or array type from the types of a constructor function type Type
  • Exclude<UnionType, ExcludedMembers> - Constructs a type by excluding from UnionType all union members that are assignable to ExcludedMembers
  • Extract<Type, Union> - Constructs a type by extracting from Type all union members that are assignable to Union
  • InstanceType<Type> - Constructs a type consisting of the instance type of a constructor function in Type
  • Lowercase<StringType> - Converts each character in the string to the lowercase equivalent
  • NonNullable<Type> - Constructs a type by excluding null and undefined from Type
  • Omit<Type, Keys> - Constructs a type by picking all properties from Type and then removing Keys
  • Parameters<Type> - Constructs a tuple type from the types used in the parameters of a function type Type
  • Partial<Type> - Constructs a type with all properties of Type set to optional
  • Pick<Type, Keys> - Constructs a type by picking the set of properties Keys from Type
  • Readonly<Type> - Constructs a type with all properties of Type set to readonly, meaning the properties of the constructed type cannot be reassigned
  • Record<Keys, Type> - Constructs an object type whose property keys are Keys and whose property values are Type
  • Required<Type> - Constructs a type consisting of all properties of Type set to required
  • ReturnType<Type> - Constructs a type consisting of the return type of function type Type parameter
  • Uncapitalize<StringType> - Converts the first character in the string to a lowercase equivalent
  • Uppercase<StringType> - Converts each character in the string to the uppercase version

TypeScript dependency table

ts-essentialstypescript / type of dependency
^9.4.0^4.1.0 / peer optional
^8.0.0^4.1.0 / peer
^5.0.0^3.7.0 / peer
^3.0.1^3.5.0 / peer
^1.0.1^3.2.2 / dev
^1.0.0^3.0.3 / dev

Contributors

Thanks goes to these wonderful people (emoji key):


Chris Kaczor

๐Ÿ’ป ๐Ÿ’ผ ๐Ÿ’ก ๐Ÿ“–

Xiao Liang

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Mateusz Burzyล„ski

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Maciej Bembenista

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Michael Tontchev

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Thomas den Hollander

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Esa-Matti Suuronen

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Ilya Semenov

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Code Checks

๐Ÿ‘€

Patricio Palladino

๐Ÿค”

Artur Kozak

๐Ÿ’ป ๐Ÿค” ๐Ÿ“– ๐Ÿ‘€

Zihua Wu

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Kevin Peno

๐Ÿ’ป

Dom Parfitt

๐Ÿค”

EduardoRFS

๐Ÿ’ป ๐Ÿ“–

Andrew C. Dvorak

๐Ÿ“–

Adam Russell

๐Ÿ’ป ๐Ÿ“–

Piotr Szlachciak

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Mikhail Swift

๐Ÿ’ป

Ryan Zhang

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

Francesco Borzรฌ

๐Ÿ“– ๐Ÿ’ป

Marnick L'Eau

๐Ÿ’ป ๐Ÿค” ๐Ÿ“–

kubk

๐Ÿ’ป

Bill Barry

๐Ÿ’ป ๐Ÿ“–

Andrzej Wรณdkiewicz

๐Ÿ’ป ๐Ÿ“– ๐Ÿค”

Christian

๐Ÿค”

Matthew Leffler

๐Ÿ“–

studds

๐Ÿ’ป

Alex Berezin

๐Ÿ’ป ๐Ÿ“–

vitonsky

๐Ÿ“–

Itay Ronen

๐Ÿ’ป

Yaroslav Larin

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome! Read more

Keywords

FAQs

Last updated on 06 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc