# ofClass

Takes the name of a valid javascript class in form of string (*for example: 'String', 'Date', 'BigInt', etc*) then returns a new function reporting whether the received value is an instance of that class.

**ofClass** is the backbone of all the type validators:

{% code title="isString.js" %}

```javascript
import ofClass from './ofClass';

/**
 * Evaluates whether the given value is of type string
 * @param value
 * @returns {boolean}
 */
const isString = ofClass('String');

export default isString;
```

{% endcode %}

{% hint style="success" %}
**ofClass** 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 %}
