# is-simple

> Simple type checking for JavaScript in the browser and node.js

Latest version **2.0.3** (published 2015-02-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install is-simple
pnpm add is-simple
yarn add is-simple
bun add is-simple
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 2.0.3 |
| Published | 2015-02-15 |
| First published | 2013-10-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.6 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Matthew Oates |
| Maintainers | matthewoates08 |
| Keywords | is, type safe |

## Links

- npm: https://www.npmjs.com/package/is-simple
- Repository: https://github.com/matthewoates/is
- Issues: https://github.com/matthewoates/is/issues
- npm.io page: https://npm.io/package/is-simple

## Alternatives

- [memory-cache](https://npm.io/package/memory-cache.md) — 795.0K weekly downloads
- [@httptoolkit/proxy-agent](https://npm.io/package/@httptoolkit/proxy-agent.md) — 11.2K weekly downloads
- [express-cache-controller](https://npm.io/package/express-cache-controller.md) — 5.3K weekly downloads
- [http-cache-middleware](https://npm.io/package/http-cache-middleware.md) — 4.5K weekly downloads
- [cache2](https://npm.io/package/cache2.md) — 1.5K weekly downloads

## Recent versions

- 2.0.3 (latest) — 2015-02-15
- 2.0.2 — 2014-11-16
- 2.0.1 — 2014-11-13
- 2.0.0 — 2014-11-05
- 1.0.0 — 2014-05-09
- 0.1.1 — 2014-05-08
- 0.1.0 — 2014-05-08
- 0.0.1 — 2013-10-15

## README

# IS (is-simple)
*Quick, easy, and lightweight type checking*

# Why?

Type checking should be simple. This library does that, in as simple of a way that I can think of. It's easy to get tripped up with some of the neuances of JavaScript (such as `typeof null === "object"`, or `isNaN("wtf") === true`), and this library aims to prevent that.

# Installation

### Node.js
`npm install is-simple`

### In the browser
`<script src="is.js"/>`

# Usage

```javascript
// simple type checking
console.log(is.number(5)); // true
console.log(is.integer(2.5)); // false
console.log(is.function(console.log)); // true

// complex type checking
function Point(x, y) {
    this.x = x;
    this.y = y;
}

var point = new Point(2, 4);
var fakePoint = {x: 2, y: 4};

console.log(is.instanceOf(Point)(p)); // true
console.log(is.instanceOf(Point)(fakePoint)); // false

// even more complex type checking
console.log(is.arrayOf(is.number)([1, 2, 3])); // true
console.log(is.arrayOf(is.instanceOf(Point))([point])); // true
```

### Using your own functions
You can easily extend `IS` by adding your own functions. These functions can also be passed in to `is.arrayOf`.
```javascript
is.even = function (x) {
    return x % 2 === 0;
};

console.log(is.even(4)); // true
console.log(is.arrayOf(is.even)([2, 4, 6, 8])); // true
```

# Matching Basic JavaScript Types
*NOTE: `typeof null === "object"`, but `IS` considers null to not be an object*

| matches                                 | is.array | is.number | is.boolean | is.string | is.fn | is.object |
|-----------------------------------------|----------|-----------|------------|-----------|-------|-----------|
| null, undefined                         | no       | no        | no         | no        | no    | no        |
| NaN, Infinity                           | no       | yes       | no         | no        | no    | no        |
| 0, 2, -5                                | no       | yes       | no         | no        | no    | no        |
| 0.5, Math.PI                            | no       | yes       | no         | no        | no    | no        |
| true, false                             | no       | no        | yes        | no        | no    | no        |
| "", "hello"                             | no       | no        | no         | yes       | no    | no        |
| [], [1, 2, 3]                           | yes      | no        | no         | no        | no    | yes       |
| {}                                      | no       | no        | no         | no        | no    | yes       |
| function () {}, console, window, Object | no       | no        | no         | no        | yes   | yes       |

# Special Types
*NOTE: we treat `""` as defined*

| matches                                 | is.defined | is.realNumber | is.integer |
|-----------------------------------------|------------|---------------|------------|
| null, undefined                         | no         | no            | no         |
| NaN, Infinity                           | no         | no            | no         |
| 0, 2, -5                                | yes        | yes           | yes        |
| 0.5, Math.PI                            | yes        | yes           | no         |
| true, false                             | yes        | no            | no         |
| "", "hello"                             | yes        | no            | no         |
| [], [1, 2, 3]                           | yes        | no            | no         |
| {}                                      | yes        | no            | no         |
| function () {}, console, window, Object | yes        | no            | no         |

# Specific Checks
`is.nan` is only true if passed in `NaN`.
`is.undefined` is only true if passed in `undefined`.

# Testing
```
npm install -g mocha
npm test
```

# License
MIT

---
_Source: https://npm.io/package/is-simple · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
