0.0.2 • Published 2 years ago

hyper-types v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

hyper-types

Advanced utility types for Typescript

Installation

$ npm i hyper-types --save-dev
  or
$ yarn add hyper-types --dev

API

Table of contents

Namespaces

Namespace: Arithmetic

Table of contents

Type Aliases

Type Aliases

Decrease

Ƭ Decrease<T>: T extends `0${infer A}` ? Decrease<A> : T extends "" ? "" : T extends keyof DecreaseDigitMap ? DecreaseDigitMapT : T extends `${infer A}0` ? Decrease<A> extends 0 ? "9" : `${Decrease}9` : T extends `${infer A}${infer B}` ? `${A}${Decrease}` : "0"

Type parameters
NameType
Textends string
Defined in

src/arithmetic.ts:16


Increase

Ƭ Increase<T>: T extends "" ? "" : T extends keyof IncreaseDigitMap ? IncreaseDigitMapT : T extends `${infer A}9` ? Increase<A> extends "" ? "10" : `${Increase}0` : T extends `${infer A}${infer B}` ? `${A}${Increase}` : "0"

Type parameters
NameType
Textends string
Defined in

src/arithmetic.ts:42


IsDigitLarger

Ƭ IsDigitLarger<a, b, counter>: counter extends "10" ? false : a extends b ? false : a extends counter ? false : b extends counter ? true : IsDigitLarger<a, b, Increase<counter>>

Type parameters
NameType
aextends string
bextends string
counterextends string = "0"
Defined in

src/arithmetic.ts:54


IsLarger

Ƭ IsLarger<a, b>: IsEqual<a, b> extends true ? false : IsLonger<a, b> extends true ? true : IsLonger<b, a> extends true ? false : a extends `${infer a1}${infer a2}` ? b extends `${infer b1}${infer b2}` ? IsEqual<a1, b1> extends true ? IsLarger<a2, b2> : IsDigitLarger<a1, b1> : never : never

Type parameters
NameType
aextends string
bextends string
Defined in

src/arithmetic.ts:68


IsLargerEquals

Ƭ IsLargerEquals<a, b>: Or<IsLarger<a, b>, IsEqual<a, b>>

Type parameters
NameType
aextends string
bextends string
Defined in

src/arithmetic.ts:90


IsSmaller

Ƭ IsSmaller<a, b>: And<Not<IsLarger<a, b>>, Not<IsEqual<a, b>>>

Type parameters
NameType
aextends string
bextends string
Defined in

src/arithmetic.ts:85


IsSmallerEquals

Ƭ IsSmallerEquals<a, b>: Or<IsSmaller<a, b>, IsEqual<a, b>>

Type parameters
NameType
aextends string
bextends string
Defined in

src/arithmetic.ts:95

Namespace: Logic

Table of contents

Type Aliases

Type Aliases

And

Ƭ And<A, B, C, D, E, F>: A extends true ? B extends true ? C extends true ? D extends true ? E extends true ? F extends true ? true : false : false : false : false : false : false

Evaluates to true if all provided types are true.

Example

type A = And<true, true>; // true
type B = And<true, false>; // false
Type parameters
NameType
Aextends boolean
Bextends boolean
Cextends boolean = true
Dextends boolean = true
Eextends boolean = true
Fextends boolean = true
Defined in

src/logic.ts:10


Extends

Ƭ Extends<A, B>: A extends B ? true : false

short for A extends B ? true : false

Type parameters
Name
A
B
Defined in

src/logic.ts:99


IfElse

Ƭ IfElse<cond, then, otherwise>: cond extends true ? then : otherwise

short for cond extends true ? then : otherwise

Example

type A = IfElse<true, 42, 1337>; // 42
Type parameters
NameType
condextends boolean
thenthen
otherwiseotherwise
Defined in

src/logic.ts:109


IsEqual

Ƭ IsEqual<A, B>: And<A extends B ? true : false, B extends A ? true : false>

Evaluates to true if both types are equal, i.e. extend each other.

Example

type A = IsEqual<42, 42>; // true
type B = IsEqual<1337, 69>; // false
Type parameters
NameType
Aextends string
Bextends string
Defined in

src/logic.ts:80


IsInequal

Ƭ IsInequal<A, B>: Not<IsEqual<A, B>>

Evaluates to true if both types are not equal, i.e. not extend each other.

Example

type A = IsInequal<42, 42>; // false
type B = IsInequal<1337, 69>; // true
Type parameters
NameType
Aextends string
Bextends string
Defined in

src/logic.ts:94


Not

Ƭ Not<T>: T extends true ? false : true

Evaluates to the opposite of the passed type.

Example

type A = Not<false>; // true
Type parameters
NameType
Textends boolean
Defined in

src/logic.ts:69


Or

Ƭ Or<A, B, C, D, E, F>: A extends true ? true : B extends true ? true : C extends true ? true : D extends true ? true : E extends true ? true : F extends true ? true : false

Evaluates to true if at least one of the provided types is true.

Example

type A = Or<true, false>; // true
type B = Or<false, false>; // false
Type parameters
NameType
Aextends boolean
Bextends boolean
Cextends boolean = false
Dextends boolean = false
Eextends boolean = false
Fextends boolean = false
Defined in

src/logic.ts:40

Namespace: Strings

Table of contents

Type Aliases

Type Aliases

Contains

Ƭ Contains<str, substring>: Extends<str, `${string}${substring}${string}`>

Type parameters
NameType
strextends string
substringextends string
Defined in

src/string.ts:8


CountCharOccurances

Ƭ CountCharOccurances<str, char, count>: IsEmpty<str> extends true ? count : CountCharOccurances<WithoutFirstChar<str>, char, FirstChar<str> extends char ? Increase<count> : count>

Type parameters
NameType
strextends string
charextends string
countextends string = "0"
Defined in

src/string.ts:33


EndsWith

Ƭ EndsWith<str, suffix>: Extends<str, `${string}${suffix}`>

Type parameters
NameType
strextends string
suffixextends string
Defined in

src/string.ts:24


EqualCharOccurances

Ƭ EqualCharOccurances<str, charA, charB>: IsEqual<CountCharOccurances<str, charA>, CountCharOccurances<str, charB>>

Type parameters
NameType
strextends string
charAextends string
charBextends string
Defined in

src/string.ts:45


FirstChar

Ƭ FirstChar<str>: str extends `${infer first}${string}` ? first : never

Type parameters
NameType
strextends string
Defined in

src/string.ts:13


IsEmpty

Ƭ IsEmpty<T>: T extends "" ? true : false

Type parameters
NameType
Textends string
Defined in

src/string.ts:4


IsNotEmpty

Ƭ IsNotEmpty<T>: Not<IsEmpty<T>>

Type parameters
NameType
Textends string
Defined in

src/string.ts:6


IsSingleChar

Ƭ IsSingleChar<str>: str extends `${string}${infer a}` ? IsEmpty<a> : false

Type parameters
NameType
strextends string
Defined in

src/string.ts:29


StartsWith

Ƭ StartsWith<str, prefix>: Extends<str, `${prefix}${string}`>

Type parameters
NameType
strextends string
prefixextends string
Defined in

src/string.ts:19


WithoutFirstChar

Ƭ WithoutFirstChar<str>: str extends `${string}${infer rest}` ? rest : never

Type parameters
NameType
strextends string
Defined in

src/string.ts:16

Namespace: Utilities

Table of contents

Type Aliases

Type Aliases

IsLonger

Ƭ IsLonger<a, b>: a extends `${string}${infer a2}` ? b extends `${string}${infer b2}` ? And<IsNotEmpty<a2>, IsNotEmpty<b2>> extends true ? IsLonger<a2, b2> : IsNotEmpty<a2> : never : never

Type parameters
NameType
aextends string
bextends string
Defined in

src/utils.ts:4