UNPKG

@xylabs/typeof

Version:

Base functionality used throughout XY Labs TypeScript/JavaScript libraries

2,510 lines (1,378 loc) 32.3 kB
# @xylabs/typeof [![npm][npm-badge]][npm-link] [![license][license-badge]][license-link] > Base functionality used throughout XY Labs TypeScript/JavaScript libraries ## Install Using npm: ```sh npm install {{name}} ``` Using yarn: ```sh yarn add {{name}} ``` Using pnpm: ```sh pnpm add {{name}} ``` Using bun: ```sh bun add {{name}} ``` ## License See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only). ## Reference ### packages ### typeof ### .temp-typedoc ### functions ### <a id="ifDefined"></a>ifDefined [**@xylabs/typeof**](#../README) *** ```ts function ifDefined<T>(value, func): T | undefined; ``` Invokes the callback only if the value is neither null nor undefined. ## Type Parameters ### T `T` ## Parameters ### value `T` The value to check. ### func (`value`) => `void` The callback to invoke with the value if it is defined. ## Returns `T` \| `undefined` The value if defined, or undefined otherwise. ### <a id="ifTypeOf"></a>ifTypeOf [**@xylabs/typeof**](#../README) *** ```ts function ifTypeOf<T, R>( typeName, value, trueFunc, isFunc?): R | undefined; ``` Invokes the callback if the value matches the specified type, with an optional additional predicate. ## Type Parameters ### T `T` ### R `R` ## Parameters ### typeName [`TypeOfTypes`](#../type-aliases/TypeOfTypes) The expected type name to match against. ### value `unknown` The value to check. ### trueFunc (`value`) => `R` The callback to invoke if the type matches. ### isFunc? (`value`) => `boolean` Optional additional predicate that must also return true. ## Returns `R` \| `undefined` The result of trueFunc if the type matches (and isFunc passes), or undefined. ### <a id="isArray"></a>isArray [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isArray(value): value is readonly unknown[]; ``` Type guard that checks whether a value is an array. ### Parameters ### value `unknown` ### Returns `value is readonly unknown[]` ## Call Signature ```ts function isArray<T>(value): value is Extract<T, readonly unknown[]>; ``` Type guard that checks whether a value is an array. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, readonly unknown[]>` ### <a id="isArrayBufferView"></a>isArrayBufferView [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isArrayBufferView(value): value is ArrayBufferView<ArrayBufferLike>; ``` Type guard that checks whether a value is an ArrayBufferView (e.g., TypedArray or DataView). ### Parameters ### value `unknown` ### Returns `value is ArrayBufferView<ArrayBufferLike>` ## Call Signature ```ts function isArrayBufferView<T>(value): value is Extract<T, ArrayBufferView<ArrayBufferLike>>; ``` Type guard that checks whether a value is an ArrayBufferView (e.g., TypedArray or DataView). ### Type Parameters ### T `T` *extends* `ArrayBufferView`\<`ArrayBufferLike`\> ### Parameters ### value `T` ### Returns `value is Extract<T, ArrayBufferView<ArrayBufferLike>>` ### <a id="isBigInt"></a>isBigInt [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isBigInt(value): value is bigint; ``` Type guard that checks whether a value is a bigint. ### Parameters ### value `unknown` ### Returns `value is bigint` ## Call Signature ```ts function isBigInt<T>(value): value is Extract<T, bigint>; ``` Type guard that checks whether a value is a bigint. ### Type Parameters ### T `T` *extends* `bigint` ### Parameters ### value `T` ### Returns `value is Extract<T, bigint>` ### <a id="isBlob"></a>isBlob [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isBlob(value): value is Blob; ``` Type guard that checks whether a value is a Blob instance. ### Parameters ### value `unknown` ### Returns `value is Blob` ## Call Signature ```ts function isBlob<T>(value): value is Extract<T, Blob>; ``` Type guard that checks whether a value is a Blob instance. ### Type Parameters ### T `T` *extends* `Blob` ### Parameters ### value `T` ### Returns `value is Extract<T, Blob>` ### <a id="isBoolean"></a>isBoolean [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isBoolean(value): value is boolean; ``` Type guard that checks whether a value is a boolean. ### Parameters ### value `unknown` ### Returns `value is boolean` ## Call Signature ```ts function isBoolean<T>(value): value is Extract<T, boolean>; ``` Type guard that checks whether a value is a boolean. ### Type Parameters ### T `T` *extends* `boolean` ### Parameters ### value `T` ### Returns `value is Extract<T, boolean>` ### <a id="isDataView"></a>isDataView [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isDataView(value): value is DataView<ArrayBufferLike>; ``` Type guard that checks whether a value is a DataView instance. ### Parameters ### value `unknown` ### Returns `value is DataView<ArrayBufferLike>` ## Call Signature ```ts function isDataView<T>(value): value is Extract<T, DataView<ArrayBufferLike>>; ``` Type guard that checks whether a value is a DataView instance. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, DataView<ArrayBufferLike>>` ### <a id="isDate"></a>isDate [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isDate(value): value is Date; ``` Type guard that checks whether a value is a Date instance. ### Parameters ### value `unknown` ### Returns `value is Date` ## Call Signature ```ts function isDate<T>(value): value is Extract<T, Date>; ``` Type guard that checks whether a value is a Date instance. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, Date>` ### <a id="isDateString"></a>isDateString [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isDateString(value): value is string; ``` Type guard that checks whether a value is a string that can be parsed as a valid date. ### Parameters ### value `unknown` ### Returns `value is string` ## Call Signature ```ts function isDateString<T>(value): value is Extract<T, string>; ``` Type guard that checks whether a value is a string that can be parsed as a valid date. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, string>` ### <a id="isDefined"></a>isDefined [**@xylabs/typeof**](#../README) *** ```ts function isDefined<T>(value): value is Exclude<T, undefined>; ``` Type guard that checks whether a value is not undefined. ## Type Parameters ### T `T` ## Parameters ### value `T` ## Returns `value is Exclude<T, undefined>` ### <a id="isDefinedNotNull"></a>isDefinedNotNull [**@xylabs/typeof**](#../README) *** ```ts function isDefinedNotNull<T>(value): value is Exclude<T, null | undefined>; ``` Type guard that checks whether a value is neither undefined nor null. ## Type Parameters ### T `T` ## Parameters ### value `T` ## Returns value is Exclude\<T, null \| undefined\> ### <a id="isEmpty"></a>isEmpty [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isEmpty<T>(value): value is T; ``` Type guard that checks whether a value is empty (empty string, empty array, or empty object). ### Type Parameters ### T `T` ### Parameters ### value `unknown` ### Returns `value is T` ## Call Signature ```ts function isEmpty<K, V, T>(value): value is Extract<T, Record<K, never>>; ``` Type guard that checks whether a value is empty (empty string, empty array, or empty object). ### Type Parameters ### K `K` *extends* [`RecordKey`](#../type-aliases/RecordKey) ### V `V` ### T `T` *extends* `Record`\<`K`, `V`\> ### Parameters ### value `T` ### Returns `value is Extract<T, Record<K, never>>` ## Call Signature ```ts function isEmpty<T>(value): value is Extract<T, never[]>; ``` Type guard that checks whether a value is empty (empty string, empty array, or empty object). ### Type Parameters ### T `T` *extends* `unknown`[] ### Parameters ### value `T` ### Returns `value is Extract<T, never[]>` ### <a id="isEmptyArray"></a>isEmptyArray [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isEmptyArray(value): value is []; ``` Type guard that checks whether a value is an empty array. ### Parameters ### value `unknown` ### Returns `value is []` ## Call Signature ```ts function isEmptyArray<T>(value): value is Extract<T, unknown[]>; ``` Type guard that checks whether a value is an empty array. ### Type Parameters ### T `T` *extends* `unknown`[] ### Parameters ### value `T` ### Returns `value is Extract<T, unknown[]>` ### <a id="isEmptyObject"></a>isEmptyObject [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isEmptyObject(value): value is {}; ``` Type guard that checks whether a value is an object with no own keys. ### Parameters ### value `unknown` ### Returns `value is {}` ## Call Signature ```ts function isEmptyObject<K, V, T>(value): value is Extract<T, Record<K, never>>; ``` Type guard that checks whether a value is an object with no own keys. ### Type Parameters ### K `K` *extends* [`RecordKey`](#../type-aliases/RecordKey) ### V `V` ### T `T` *extends* `Record`\<`K`, `V`\> ### Parameters ### value `T` ### Returns `value is Extract<T, Record<K, never>>` ### <a id="isEmptyString"></a>isEmptyString [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isEmptyString(value): value is ""; ``` Type guard that checks whether a value is an empty string. ### Parameters ### value `unknown` ### Returns `value is ""` ## Call Signature ```ts function isEmptyString<T>(value): value is Extract<T, "">; ``` Type guard that checks whether a value is an empty string. ### Type Parameters ### T `T` *extends* `string` ### Parameters ### value `T` ### Returns `value is Extract<T, "">` ### <a id="isError"></a>isError [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isError(value): value is Error; ``` Type guard that checks whether a value is an Error instance. ### Parameters ### value `unknown` ### Returns `value is Error` ## Call Signature ```ts function isError<T>(value): value is Extract<T, Error>; ``` Type guard that checks whether a value is an Error instance. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, Error>` ### <a id="isFalsy"></a>isFalsy [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, false | "" | 0 | 0n | null | undefined>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns value is Extract\<T, false \| "" \| 0 \| 0n \| null \| undefined\> ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, false>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `boolean` ### Parameters ### value `T` ### Returns `value is Extract<T, false>` ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, 0>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `number` ### Parameters ### value `T` ### Returns `value is Extract<T, 0>` ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, 0n>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `bigint` ### Parameters ### value `T` ### Returns `value is Extract<T, 0n>` ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, null>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `null` ### Parameters ### value `T` ### Returns `value is Extract<T, null>` ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, undefined>; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `undefined` ### Parameters ### value `T` ### Returns `value is Extract<T, undefined>` ## Call Signature ```ts function isFalsy<T>(value): value is Extract<T, "">; ``` Type guard that checks whether a value is falsy (0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `string` ### Parameters ### value `T` ### Returns `value is Extract<T, "">` ### <a id="isFile"></a>isFile [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isFile(value): value is File; ``` Type guard that checks whether a value is a File instance. ### Parameters ### value `unknown` ### Returns `value is File` ## Call Signature ```ts function isFile<T>(value): value is Extract<T, File>; ``` Type guard that checks whether a value is a File instance. ### Type Parameters ### T `T` *extends* `File` ### Parameters ### value `T` ### Returns `value is Extract<T, File>` ### <a id="isFunction"></a>isFunction [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isFunction(value): value is AnyFunction; ``` Type guard that checks whether a value is a function. ### Parameters ### value `unknown` ### Returns `value is AnyFunction` ## Call Signature ```ts function isFunction<T>(value): value is Extract<T, AnyFunction>; ``` Type guard that checks whether a value is a function. ### Type Parameters ### T `T` *extends* [`AnyFunction`](#../type-aliases/AnyFunction) ### Parameters ### value `T` ### Returns `value is Extract<T, AnyFunction>` ### <a id="isMap"></a>isMap [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isMap(value): value is Map<unknown, unknown>; ``` Type guard that checks whether a value is a Map instance. ### Parameters ### value `unknown` ### Returns `value is Map<unknown, unknown>` ## Call Signature ```ts function isMap<K, V, T>(value): value is Extract<T, Map<K, V>>; ``` Type guard that checks whether a value is a Map instance. ### Type Parameters ### K `K` ### V `V` ### T `T` *extends* `Map`\<`K`, `V`\> ### Parameters ### value `T` ### Returns `value is Extract<T, Map<K, V>>` ### <a id="isNull"></a>isNull [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isNull(value): value is null; ``` Type guard that checks whether a value is null. ### Parameters ### value `unknown` ### Returns `value is null` ## Call Signature ```ts function isNull<T>(value): value is Extract<T, null>; ``` Type guard that checks whether a value is null. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, null>` ### <a id="isNumber"></a>isNumber [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isNumber(value): value is number; ``` Type guard that checks whether a value is a number. ### Parameters ### value `unknown` ### Returns `value is number` ## Call Signature ```ts function isNumber<T>(value): value is Extract<T, number>; ``` Type guard that checks whether a value is a number. ### Type Parameters ### T `T` *extends* `number` ### Parameters ### value `T` ### Returns `value is Extract<T, number>` ### <a id="isObject"></a>isObject [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isObject(value): value is object; ``` Type guard that checks whether a value is a plain object (not null and not an array). ### Parameters ### value `unknown` ### Returns `value is object` ## Call Signature ```ts function isObject<T>(value): value is Extract<T, object>; ``` Type guard that checks whether a value is a plain object (not null and not an array). ### Type Parameters ### T `T` *extends* `object` ### Parameters ### value `T` ### Returns `value is Extract<T, object>` ### <a id="isPopulatedArray"></a>isPopulatedArray [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isPopulatedArray(value): value is readonly unknown[]; ``` Type guard that checks whether a value is a non-empty array. ### Parameters ### value `unknown` ### Returns `value is readonly unknown[]` ## Call Signature ```ts function isPopulatedArray<T>(value): value is Extract<T, readonly unknown[]>; ``` Type guard that checks whether a value is a non-empty array. ### Type Parameters ### T `T` *extends* `unknown`[] ### Parameters ### value `T` ### Returns `value is Extract<T, readonly unknown[]>` ### <a id="isPromise"></a>isPromise [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isPromise(value): value is Promise<unknown>; ``` Type guard that checks whether a value is a Promise instance. ### Parameters ### value `unknown` ### Returns `value is Promise<unknown>` ## Call Signature ```ts function isPromise<T>(value): value is Extract<T, Promise<unknown>>; ``` Type guard that checks whether a value is a Promise instance. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, Promise<unknown>>` ### <a id="isPromiseLike"></a>isPromiseLike [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isPromiseLike(value): value is Promise<unknown>; ``` Type guard that checks whether a value is promise-like (has a `then` method). ### Parameters ### value `unknown` ### Returns `value is Promise<unknown>` ## Call Signature ```ts function isPromiseLike<T>(value): value is Extract<T, Promise<unknown>>; ``` Type guard that checks whether a value is promise-like (has a `then` method). ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, Promise<unknown>>` ### <a id="isRegExp"></a>isRegExp [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isRegExp(value): value is RegExp; ``` Type guard that checks whether a value is a RegExp instance. ### Parameters ### value `unknown` ### Returns `value is RegExp` ## Call Signature ```ts function isRegExp<T>(value): value is Extract<T, RegExp>; ``` Type guard that checks whether a value is a RegExp instance. ### Type Parameters ### T `T` *extends* `RegExp` ### Parameters ### value `T` ### Returns `value is Extract<T, RegExp>` ### <a id="isSet"></a>isSet [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isSet(value): value is Set<unknown>; ``` Type guard that checks whether a value is a Set instance. ### Parameters ### value `unknown` ### Returns `value is Set<unknown>` ## Call Signature ```ts function isSet<T>(value): value is Extract<T, Set<unknown>>; ``` Type guard that checks whether a value is a Set instance. ### Type Parameters ### T `T` *extends* `Set`\<`unknown`\> ### Parameters ### value `unknown` ### Returns `value is Extract<T, Set<unknown>>` ### <a id="isString"></a>isString [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isString(value): value is string; ``` Type guard that checks whether a value is a string. ### Parameters ### value `unknown` ### Returns `value is string` ## Call Signature ```ts function isString<T>(value): value is Extract<T, string>; ``` Type guard that checks whether a value is a string. ### Type Parameters ### T `T` *extends* `string` ### Parameters ### value `T` ### Returns `value is Extract<T, string>` ### <a id="isSymbol"></a>isSymbol [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isSymbol(value): value is symbol; ``` Type guard that checks whether a value is a symbol. ### Parameters ### value `unknown` ### Returns `value is symbol` ## Call Signature ```ts function isSymbol<T>(value): value is Extract<T, symbol>; ``` Type guard that checks whether a value is a symbol. ### Type Parameters ### T `T` *extends* `symbol` ### Parameters ### value `T` ### Returns `value is Extract<T, symbol>` ### <a id="isTruthy"></a>isTruthy [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isTruthy<T>(value): value is Exclude<T, false | "" | 0 | 0n | null | undefined>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns value is Exclude\<T, false \| "" \| 0 \| 0n \| null \| undefined\> ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, true>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `boolean` ### Parameters ### value `T` ### Returns `value is Extract<T, true>` ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, number>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `number` ### Parameters ### value `T` ### Returns `value is Extract<T, number>` ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, bigint>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `bigint` ### Parameters ### value `T` ### Returns `value is Extract<T, bigint>` ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, null>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `null` ### Parameters ### value `T` ### Returns `value is Extract<T, null>` ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, undefined>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `undefined` ### Parameters ### value `T` ### Returns `value is Extract<T, undefined>` ## Call Signature ```ts function isTruthy<T>(value): value is Extract<T, string>; ``` Type guard that checks whether a value is truthy (not 0, null, undefined, false, '', or 0n). ### Type Parameters ### T `T` *extends* `string` ### Parameters ### value `T` ### Returns `value is Extract<T, string>` ### <a id="isType"></a>isType [**@xylabs/typeof**](#../README) *** ```ts function isType(value, expectedType): boolean; ``` Checks whether a value matches the expected field type, with correct handling for arrays and nulls. ## Parameters ### value `unknown` The value to check. ### expectedType [`FieldType`](#../type-aliases/FieldType) The expected type string. ## Returns `boolean` True if the value matches the expected type. ### <a id="isTypedArray"></a>isTypedArray [**@xylabs/typeof**](#../README) *** ```ts function isTypedArray(value): value is TypedArray; ``` Type guard that checks whether a value is a TypedArray (an array where every element is a TypedValue). ## Parameters ### value `unknown` The value to check. ## Returns `value is TypedArray` True if the value is an array of TypedValue elements. ### <a id="isTypedKey"></a>isTypedKey [**@xylabs/typeof**](#../README) *** ```ts function isTypedKey(value): value is string | number | symbol; ``` Type guard that checks whether a value is a valid TypedKey (string, bigint, number, or symbol). ## Parameters ### value `unknown` The value to check. ## Returns value is string \| number \| symbol True if the value is a valid TypedKey. ### <a id="isTypedObject"></a>isTypedObject [**@xylabs/typeof**](#../README) *** ```ts function isTypedObject(value): value is TypedObject; ``` Type guard that checks whether a value is a TypedObject (an object with TypedKey keys and TypedValue values). ## Parameters ### value `unknown` The value to check. ## Returns `value is TypedObject` True if the value is a valid TypedObject. ### <a id="isTypedValue"></a>isTypedValue [**@xylabs/typeof**](#../README) *** ```ts function isTypedValue(value): value is TypedValue; ``` Type guard that checks whether a value is a valid TypedValue. ## Parameters ### value `unknown` The value to check. ## Returns `value is TypedValue` True if the value is a string, number, boolean, null, TypedObject, or TypedArray. ### <a id="isUndefined"></a>isUndefined [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isUndefined(value): value is undefined; ``` Type guard that checks whether a value is undefined. ### Parameters ### value `unknown` ### Returns `value is undefined` ## Call Signature ```ts function isUndefined<T>(value): value is Extract<T, undefined>; ``` Type guard that checks whether a value is undefined. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns `value is Extract<T, undefined>` ### <a id="isUndefinedOrNull"></a>isUndefinedOrNull [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isUndefinedOrNull(value): value is null | undefined; ``` Type guard that checks whether a value is undefined or null. ### Parameters ### value `unknown` ### Returns value is null \| undefined ## Call Signature ```ts function isUndefinedOrNull<T>(value): value is Extract<T, null | undefined>; ``` Type guard that checks whether a value is undefined or null. ### Type Parameters ### T `T` ### Parameters ### value `T` ### Returns value is Extract\<T, null \| undefined\> ### <a id="isValidTypedFieldPair"></a>isValidTypedFieldPair [**@xylabs/typeof**](#../README) *** ```ts function isValidTypedFieldPair(pair): pair is [key: string | number | symbol, value: TypedValue]; ``` Type guard that checks whether a key-value pair has a valid TypedKey and TypedValue. ## Parameters ### pair \[`unknown`, `unknown`\] A tuple of [key, value] to validate. ## Returns pair is \[key: string \| number \| symbol, value: TypedValue\] True if the key is a TypedKey and the value is a TypedValue. ### <a id="isWeakMap"></a>isWeakMap [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isWeakMap(value): value is WeakMap<WeakKey, unknown>; ``` Type guard that checks whether a value is a WeakMap instance. ### Parameters ### value `unknown` ### Returns `value is WeakMap<WeakKey, unknown>` ## Call Signature ```ts function isWeakMap<K, V, T>(value): value is Extract<T, WeakMap<K, V>>; ``` Type guard that checks whether a value is a WeakMap instance. ### Type Parameters ### K `K` *extends* `WeakKey` ### V `V` ### T `T` *extends* `WeakMap`\<`K`, `V`\> ### Parameters ### value `T` ### Returns `value is Extract<T, WeakMap<K, V>>` ### <a id="isWeakSet"></a>isWeakSet [**@xylabs/typeof**](#../README) *** ## Call Signature ```ts function isWeakSet(value): value is WeakSet<WeakKey>; ``` Type guard that checks whether a value is a WeakSet instance. ### Parameters ### value `unknown` ### Returns `value is WeakSet<WeakKey>` ## Call Signature ```ts function isWeakSet<K, T>(value): value is Extract<T, WeakSet<K>>; ``` Type guard that checks whether a value is a WeakSet instance. ### Type Parameters ### K `K` *extends* `WeakKey` ### T `T` *extends* `WeakSet`\<`K`\> ### Parameters ### value `T` ### Returns `value is Extract<T, WeakSet<K>>` ### <a id="typeOf"></a>typeOf [**@xylabs/typeof**](#../README) *** ```ts function typeOf<T>(item): TypeOfTypes; ``` Extended typeof that distinguishes arrays from objects (unlike native `typeof`). ## Type Parameters ### T `T` ## Parameters ### item `T` The value to check. ## Returns [`TypeOfTypes`](#../type-aliases/TypeOfTypes) The type of the item as a TypeOfTypes string. ### <a id="validateType"></a>validateType [**@xylabs/typeof**](#../README) *** ```ts function validateType<T>( typeName, value, optional?): [T | undefined, Error[]]; ``` Validates that a value matches the expected type, returning the value and any errors. ## Type Parameters ### T `T` ## Parameters ### typeName [`TypeOfTypes`](#../type-aliases/TypeOfTypes) The expected type name. ### value `T` The value to validate. ### optional? `boolean` = `false` If true, undefined values are accepted without error. ## Returns \[`T` \| `undefined`, `Error`[]\] A tuple of [value or undefined, array of errors]. ### type-aliases ### <a id="AnyFunction"></a>AnyFunction [**@xylabs/typeof**](#../README) *** ```ts type AnyFunction = (...args) => unknown; ``` A function type that accepts any arguments and returns unknown. ## Parameters ### args ...`unknown`[] ## Returns `unknown` ### <a id="Brand"></a>Brand [**@xylabs/typeof**](#../README) *** ```ts type Brand<T, B> = T & { [K in keyof B]: B[K] }; ``` Creates a branded type by intersecting base type T with brand type B, enabling nominal typing in TypeScript. ## Type Parameters ### T `T` ### B `B` ### <a id="FieldType"></a>FieldType [**@xylabs/typeof**](#../README) *** ```ts type FieldType = | "string" | "number" | "object" | "symbol" | "undefined" | "null" | "array" | "function"; ``` Union of string literals representing the possible types of an object field. ### <a id="IdentityFunction"></a>IdentityFunction [**@xylabs/typeof**](#../README) *** ```ts type IdentityFunction<T> = (value) => value is T; ``` A type guard function that narrows an unknown value to type T. ## Type Parameters ### T `T` ## Parameters ### value `unknown` ## Returns `value is T` ### <a id="ObjectTypeShape"></a>ObjectTypeShape [**@xylabs/typeof**](#../README) *** ```ts type ObjectTypeShape = Record<string | number | symbol, FieldType>; ``` Describes the expected shape of an object by mapping each key to its expected field type. ### <a id="RecordKey"></a>RecordKey [**@xylabs/typeof**](#../README) *** ```ts type RecordKey = string | number | symbol; ``` A union of valid object key types. ### <a id="TypeOfTypes"></a>TypeOfTypes [**@xylabs/typeof**](#../README) *** ```ts type TypeOfTypes = | "string" | "number" | "object" | "array" | "buffer" | "null" | "undefined" | "bigint" | "boolean" | "function" | "symbol"; ``` Union of string literals representing the possible results of the extended `typeOf` function. ### <a id="TypedArray"></a>TypedArray [**@xylabs/typeof**](#../README) *** ```ts type TypedArray = TypedValue[]; ``` An array of TypedValue elements. ### <a id="TypedKey"></a>TypedKey [**@xylabs/typeof**](#../README) *** ```ts type TypedKey<T> = T extends string ? T : string | number | symbol; ``` A valid key for a typed object. Defaults to string | number | symbol unless narrowed by T. ## Type Parameters ### T `T` *extends* `string` \| `void` = `void` ### <a id="TypedObject"></a>TypedObject [**@xylabs/typeof**](#../README) *** ```ts type TypedObject = | { [key: string | number | symbol]: TypedValue; } | object; ``` An object whose keys are TypedKey and whose values are TypedValue. ### <a id="TypedValue"></a>TypedValue [**@xylabs/typeof**](#../README) *** ```ts type TypedValue = | bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined; ``` A value that can appear in a typed object tree (primitives, objects, arrays, functions, and symbols). [npm-badge]: https://img.shields.io/npm/v/@xylabs/typeof.svg [npm-link]: https://www.npmjs.com/package/@xylabs/typeof [license-badge]: https://img.shields.io/npm/l/@xylabs/typeof.svg [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE