---
description: 'isError :: a → Boolean'
---

# isError

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

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

const err = new Error('foo');

isError(err); // → true
isError(anythingElse); // → false
```

_isError_, like any other type validator, is mostly used in [composed](broken-reference) 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" %}
**isError** is built on top of [ofClass](../validators/ofclass) 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 %}
