# type

Utilities for type checking.

## Functions

| Function | Description | Example |
|----------|-------------|---------|
| `of` | Get the type of a value | `dphelper.type.of(value)` |
| `instOfObj` | Check if value is Object instance | `dphelper.type.instOfObj(value)` |
| `isNaN` | Check if value is NaN | `dphelper.type.isNaN(value)` |
| `isBool` | Check if value is boolean | `dphelper.type.isBool(value)` |

## Description

Type checking utilities:
- **Type Detection** - Get precise type of any value
- **Boolean Check** - Detect boolean values
- **NaN Detection** - Identify NaN values
- **Object Check** - Verify object instances

## Usage Examples

### Get Type

```javascript
// Get type of value
console.log(dphelper.type.of('hello'));     // "string"
console.log(dphelper.type.of(123));          // "number"
console.log(dphelper.type.of(true));         // "boolean"
console.log(dphelper.type.of({}));           // "object"
console.log(dphelper.type.of([]));           // "object"
console.log(dphelper.type.of(null));        // "null"
console.log(dphelper.type.of(undefined));    // "undefined"
```

### Check Object Instance

```javascript
// Check if value is Object
console.log(dphelper.type.instOfObj({}));           // true
console.log(dphelper.type.instOfObj([]));           // true
console.log(dphelper.type.instOfObj(new Date()));  // true
console.log(dphelper.type.instOfObj('string'));    // false
console.log(dphelper.type.instOfObj(123));         // false
console.log(dphelper.type.instOfObj(null));         // false
```

### Check NaN

```javascript
// Check for NaN
console.log(dphelper.type.isNaN(NaN));              // true
console.log(dphelper.type.isNaN(0/0));              // true
console.log(dphelper.type.isNaN('hello'));          // false
console.log(dphelper.type.isNaN(123));              // false

// Safe number validation
function isValidNumber(value) {
  return !dphelper.type.isNaN(value) && dphelper.type.of(value) === 'number';
}
```

### Check Boolean

```javascript
// Check if boolean
console.log(dphelper.type.isBool(true));    // true
console.log(dphelper.type.isBool(false));  // true
console.log(dphelper.type.isBool(1));      // false
console.log(dphelper.type.isBool('true')); // false

// Boolean coercion check
function isExplicitBoolean(value) {
  return dphelper.type.isBool(value);
}
```

### Type Guard Functions

```javascript
// Comprehensive type checking
function getTypeInfo(value) {
  return {
    type: dphelper.type.of(value),
    isObject: dphelper.type.instOfObj(value),
    isNaN: dphelper.type.isNaN(value),
    isBoolean: dphelper.type.isBool(value)
  };
}

console.log(getTypeInfo(42));
// { type: 'number', isObject: false, isNaN: false, isBoolean: false }

console.log(getTypeInfo({a: 1}));
// { type: 'object', isObject: true, isNaN: false, isBoolean: false }
```

## Details

- **Author:** Dario Passariello
- **Version:** 0.0.2
- **Creation Date:** 20210101
- **Last Modified:** 20260220
- **Environment:** both (browser + Node.js)

---

*Automatically generated document*
