> For the complete documentation index, see [llms.txt](https://antonioru.gitbook.io/deep-waters/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antonioru.gitbook.io/deep-waters/type-validators/isbuffer.md).

# isBuffer

Evaluates whether the given value is of type [UInt8Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)

```javascript
import isBuffer from 'deep-waters/isBuffer';

const x = new Uint8Array([21, 31]);

isBuffer(x); // → true

isBuffer(20); // → false
isBuffer("hello"); // → false
isBuffer(undefined"); // → false
```

*isBuffer*, like any other type validator, is mostly used in [composed](broken://pages/-M6Ac8HwrWJzjYtU2tLT) validators:

```javascript
import isString from 'deep-waters/isString';
import matchesPattern from 'deep-waters/matchesPattern';

const isEmail = compose(
  isString,
  matchesPattern(/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/),
);
```

{% hint style="success" %}
**isBuffer** is built on top of [ofClass](/deep-waters/validators/ofclass.md) validator and rely on `Object.prototype.toString` to check on the received value type in order to avoid [typeof weird behaviours ](https://stackoverflow.com/questions/18808226/why-is-typeof-null-object)and encouraging a **runtime strict type validation**.
{% endhint %}

{% hint style="info" %}
**isBuffer** is actually a semantic shortcut to [isUInt8Array](/deep-waters/type-validators/isuint8array.md).&#x20;
{% endhint %}
