This package offers a suite of versatile utility types that simplify common tasks, improve type safety, and boost productivity.
- Easy to use
- Zero third party dependencies
- Type level only
- No more copy paste "type definitions" between projects
# NPM
npm install --save-dev typelab
# BUN
bun add -d typelabHere is an example for some types from each categories.
Aliases
-
Primitiveconst value1: Primitive = ""; // valid const value2: Primitive = {}; // invalid
-
Nullableconst example: Nullable<string> = null; // valid const example2: Nullable<string> = undefined; // invalid
-
Undefinableconst example: Undefinable<string> = undefined; // valid const example2: Undefinable<string> = null; // invalid
Assertions
-
IsExtendstype Extends = IsExtends<'', string>; // true type NotExtends = IsExtends<string, ''>; // false
-
IsEqualtype Equal = IsEqual<string, string>; // true type NotEqual = IsEqual<string, ''>; // false
-
IsAnytype Valid = IsAny<any>; // true type Invalid = IsAny<string>; // false
Conditions
-
IfExtendstype Yes = IfExtends<'', string, 'yes', 'no'>; // 'yes' type No = IfExtends<string, '', 'yes', 'no'>; // 'no' type YesOrNo = IfExtends<string | number, string, 'yes', 'no'>; // 'yes' | 'no'
-
IfEqualtype Yes = IfEqual<string, string, 'yes', 'no'>; // 'yes' type No = IfEqual<string, number, 'yes', 'no'>; // 'no'
-
IfAnytype Yes = IfAny<any, 'yes', 'no'>; // 'yes' type No = IfAny<string, 'yes', 'no'>; // 'no'
Utils
-
FunctionCallbackify// (a: string, callback: (error: unknown, result: string) => void) => void type Callbackified = FunctionCallbackify<(a: string) => Promise<string>>;
-
FunctionPromisify// Callback-style function: // (a: string) => Promise<string> type Promisified = FunctionPromisify<(a: string, callback: (error: Error, result: string) => void) => void>; // Regular function: // (a: string) => Promise<string> type PromisifiedFn = FunctionPromisify<(a: string) => string>;
-
ObjectAssign// { a: string; b: string; c: boolean } type Assign1 = ObjectAssign<{ a: string; b: number }, { b: string; c: boolean }>; // { a: string; 0: string } type Assign2 = ObjectAssign<{ a: string }, [string]>; // { [x: number]: string, a: string } type Assign3 = ObjectAssign<{ a: string }, string[]>; // [number, number] type Assign4 = ObjectAssign<[string], [number, number]>; // (string | number)[] type Assign5 = ObjectAssign<string[], [number, number]>; // (string | number)[] type Assign6 = ObjectAssign<string[], number[]>; // [number, string] type Assign7 = ObjectAssign<[string], { 0: number; 1: string }>; // (string | number)[] type Assign8 = ObjectAssign<[number], 'str'>; // { [x: number]: string, a: string } type Assign9 = ObjectAssign<{a: string}, 'str'>;
A complete reference for all available reusable types.
Aliases
-
Arrays
Array · Arr · List · ReadonlyArray · ReadonlyArr · ReadonlyList · WritableArray · WritableArr · WritableList -
Tuples
ReadonlyTuple · Tuple · WritableTuple -
Functions
AsyncFn · AsyncFunction · Fn · Function · NewableFn · NewableFunction -
Objects
ObjectArrayLike · ObjectEmpty · ObjectGeneric -
Misc
Any · Async · Class · Falsy · Infinity · NegativeInfinity · NonNullish · Nullish · Nullable · Primitive · PositiveInfinity · Undefinable · Void
Assertions
-
Arrays
IsArray · IsArrayReadonly · IsArrayWritable -
Tuples
IsTuple · IsTupleReadonly · IsTupleWritable -
Functions
IsAsyncFunction · IsFunction · IsNewableFunction -
Objects
IsObject · IsObjectArrayLike · IsObjectEmpty · IsObjectLiteral · IsOptionalProperty · IsRequiredProperty -
Primitives
IsBigInt · IsBoolean · IsFalse · IsNull · IsNumber · IsNumberDecimal · IsNumberInteger · IsNumberLiteral · IsPrimitive · IsString · IsStringLiteral · IsSymbol · IsTrue · IsUndefined -
Comparisons
IsAssignable · IsAssignableEitherWay · IsAssignableMutually · IsEqual · IsExtends · IsNotAssignable · IsNotAssignableEitherWay · IsNotAssignableMutually · IsNotEqual · IsNotExtends -
Misc
IsAny · IsClass · IsFalsy · IsIntersected · IsNever · IsNonNullish · IsNullish · IsPositive · IsPropertyKey · IsPromise · IsTruthy · IsUnion · IsUndefinable · IsUnknown · IsVoid
Conditions
-
Arrays
IfArray · IfArrayReadonly · IfArrayWritable -
Tuples
IfTuple · IfTupleReadonly · IfTupleWritable -
Functions
IfAsyncFunction · IfFunction · IfNewableFunction -
Objects
IfObject · IfObjectArrayLike · IfObjectEmpty · IfObjectLiteral · IfOptionalProperty · IfRequiredProperty -
Primitives
IfBigInt · IfBoolean · IfFalse · IfNull · IfNumber · IfNumberDecimal · IfNumberInteger · IfNumberLiteral · IfPrimitive · IfString · IfStringLiteral · IfSymbol · IfTrue · IfUndefined -
Comparisons
IfAssignable · IfAssignableEitherWay · IfAssignableMutually · IfEqual · IfExtends · IfNotAssignable · IfNotAssignableEitherWay · IfNotAssignableMutually · IfNotEqual · IfNotExtends -
Misc
IfAny · IfClass · IfFalsy · IfIntersected · IfNever · IfNonNullish · IfNullish · IfPositive · IfPropertyKey · IfPromise · IfTruthy · IfUnion · IfUndefinable · IfUnknown · IfVoid
Utils
-
Arrays
ArrayLength · ArrayElements · ArrayValues · ArrayIndexes · ArrayAt · ArrayFirst · ArrayLast · ArrayConcat · ArrayPush · ArrayPop · ArrayUnshift · ArrayShift · ArrayFlat · ArrayTake · ArraySkip · ArrayRequired · ArrayPartial · ArrayRequiredIndexes · ArrayOptionalIndexes · ArrayRequiredElements · ArrayOptionalElements · ArrayRequiredValues · ArrayOptionalValues · ArrayOmitRequired · ArrayOmitOptional · ArrayToObject · ArrayAssign · ArrayOverwrite · ArrayMerge · ArrayUnionize -
Objects
ObjectPick · ObjectRequired · ObjectPartial · ObjectRequiredKeys · ObjectOptionalKeys · ObjectOmitRequired · ObjectOmitOptional · ObjectReadonly · ObjectWritable · ObjectPath · ObjectPathValue · ObjectToTuple · ObjectAssign · ObjectOverwrite · ObjectMerge · ObjectUnionize -
Functions
FunctionAssign · FnAssign · FunctionOverwrite · FnOverwrite · FunctionMerge · FnMerge · FunctionPromisify · FnPromisify · FunctionCallbackify · FnCallbackify -
Unions
UnionToIntersection · UnionLast · UnionPop · UnionIntersection · UnionExclusive · UnionToTuple -
Parsing
ParseInt · ParseIntNegative · ParseIntPositive · ParseFloat · ParseFloatNegative · ParseFloatPositive · ParseBigInt · ParseBigIntNegative · ParseBigIntPositive · ParseString · ParseBoolean · ParseObject -
Misc
Brand · Detailed · ExcludeNullish · ExcludeNull · ExcludeUndefined · ExtractArray · ExtractPromise · ExtractParams · ExtractReturn · KeyOf · Mapped · PropValue · Toggle · ValueOf
- Typescript
Strongly typed programming language that builds on JavaScript. - Bun
All-in-one JavaScript runtime & toolkit designed for speed, complete with a bundler, test runner, and Node.js-compatible package manager.
The code in this project is released under the MIT License.