# @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
