type-detect
v4.1.0Improved typeof detection for node, Deno, and the browser.
Supported Browsers | |||||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | IE | |
✅ | ✅ | ✅ | ✅ | 9, 10, 11 |
What is Type-Detect?
Type Detect is a module which you can use to detect the type of a given object. It returns a string representation of the object's type, either using typeof
or @@toStringTag
. It also normalizes some object names for consistency among browsers.
Why?
The typeof
operator will only specify primitive values; everything else is "object"
(including null
, arrays, regexps, etc). Many developers use Object.prototype.toString()
- which is a fine alternative and returns many more types (null returns [object Null]
, Arrays as [object Array]
, regexps as [object RegExp]
etc).
Sadly, Object.prototype.toString
is slow, and buggy. By slow - we mean it is slower than typeof
. By buggy - we mean that some values (like Promises, the global object, iterators, dataviews, a bunch of HTML elements) all report different things in different browsers.
type-detect
fixes all of the shortcomings with Object.prototype.toString
. We have extra code to speed up checks of JS and DOM objects, as much as 20-30x faster for some values. type-detect
also fixes any consistencies with these objects.
Installation
Node.js
type-detect
is available on npm. To install it, type:
$ npm install type-detect
Deno
type-detect
can be imported with the following line:
import type from 'https://deno.land/x/[email protected]/index.ts'
Browsers
You can also use it within the browser; install via npm and use the type-detect.js
file found within the download. For example:
<script src="./node_modules/type-detect/type-detect.js"></script>
Usage
The primary export of type-detect
is function that can serve as a replacement for typeof
. The results of this function will be more specific than that of native typeof
.
var type = require('type-detect');
Or, in the browser use case, after the