Socket
Book a DemoInstallSign in
Socket

@baileyherbert/types

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@baileyherbert/types

A collection of useful types for my TypeScript projects.

latest
Source
npmnpm
Version
1.0.1
Version published
Weekly downloads
41
-32.79%
Maintainers
1
Weekly downloads
 
Created
Source

Types

This package contains some lightweight types and interfaces that I commonly use across most of my projects.

npm install @baileyherbert/types
  • Action<T>
  • Constructor<T>
  • Delegate<T>
  • Fallback<T, F>
  • Json
  • JsonArray
  • JsonMap
  • Key<T>
  • Promisable<T>
  • Pull<T, K, F>
  • Type<T>
  • Value<T, K, F>

Action<T>

Represents a function that has no arguments and returns type T (defaults to unknown).

let fn: Action<boolean> = function() {
	return true;
}

Constructor<T>

Returns a type that represents the constructor for class T. The class cannot be abstract.

class Foo {}
const constructor: Constructor<Foo> = Foo;

Delegate<T>

Represents a function that accepts any arguments and returns type T (defaults to unknown). This is most useful in an environment with dependency injection.

let fn: Delegate<boolean> = function(...args: any[]) {
	return true;
}

Fallback<T, F>

Returns T if it's defined or F otherwise.

Fallback<boolean, number>; // boolean
Fallback<undefined, number>; // number

Json

Represents data that can be serialized into or deserialized from a JSON string.

let age: Json = 32;
let name: Json = 'John Doe';
let skills: Json = [
	'Programming',
	'Engineering',
	'Architecture'
];

JsonArray

Represents an array that can be serialized into or deserialized from a JSON string.

let arr: JsonArray = [
	'Text',
	123456,
	{
		value: true
	}
]

JsonMap

Represents an object that can be serialized into or deserialized from a JSON string.

let profile: JsonMap = {
	name: 'John Doe',
	age: 32,
	skills: [
		'Programming',
		'Engineering',
		'Architecture'
	]
}

Key<T>

Extracts and returns the key names of object T. When T is undefined, a generic string type will be returned instead, allowing any key name to be specified.

This can be used to implement type safety and autocompletion with consumer interfaces, while allowing any input when an interface is not specified.

type Map = {
	first: boolean;
	second: string;
};

type Keys = Key<Map>; // 'first' | 'second'

Promisable<T>

Returns type T optionally joined with Promise<T>.

Promisable<void>; // void | Promise<void>

Pull<T, K, F>

Extracts the value of key K from object T if the value is defined.

This is identical to Value<T, K, F> except it also checks that the value of T[K] is set and allows you to fall back to another value if not.

type Map = {
	first: boolean;
	second: undefined;
};

type A = Value<Map, 'first', unknown>; // boolean
type B = Value<Map, 'second', unknown>; // unknown

Type<T>

Returns a type that represents the class T. The class does not have to contain a constructor (i.e. it can be abstract).

class Foo {}
const type: Type<Foo> = Foo;

Value<T, K, F>

Extracts the value of key K from the given object T. The key must be derived from Key<T>.

When T is undefined, the optional type F will be returned instead. This can be used to accept any input when an interface is not available.

type Map = {
	value: boolean;
};

type A = Value<Map, 'value', unknown>; // boolean
type B = Value<undefined, 'value', unknown>; // unknown

FAQs

Package last updated on 16 Dec 2021

Did you know?

Socket

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