A little ES20xx module to determine the type of ... well, anything one throws at it.
The code is available as an ESM module, as a browser script and as a browser script containing a factory function.
The module is also available from NPM.
The module exports:
-
default
: a function to determine the type of a given input. Syntax:[imported default function](input, [...type] | {...})
Note: for the
{...}
parameter, see the demonstration page -
$Wrap
: a function that wraps input and returns an Object with keys:value
: the input value (can also beundefined
,null
,NaN
orInfinity
)is([...types]|{...})
: function to determine the type of the wrapped input. This may also be[Symbol.is]
.type
: returns (a string representation) of the type of the wrapped input. This may also be[Symbol.type]
-
maybe
: a utility function that returns either a tested value, or an error value of choice, syntaxmaybe({trial: [function][, whenError: function]}
Note: without a
whenError
parameter,maybe
returnsundefined
whentrial
fails. -
isNothing(input:any[, all: boolean]
: a function to check if input is eithernull || undefined
(all: false
) ornull || undefined || NaN || Infinity
(all: true
). -
xProxy
: in thetypeofAnything
module the nativeProxy
constructor is rewritten, which enables checking if input is a proxy instance (and its constituting type). xProxy is an Object to enable/disable this. Syntax:xProxy.native()
: use the native ES20xxProxy
constructor (disable type checking for proxies - so opt out from module default)xProxy.custom()
: use the customProxy
constructor (enable type checking for proxies)
For an extensive set of examples see the demonstration page or fiddle with it with a fork of this Stackblitz project.
Your script should be of type module
.
<script type="module">
import IS from "[path to]/typeofany.module.js";
// or
const IS = (await import("[path to]/typeofany.module.js")).default;
</script>
Create a script tag in your html:
<script src="[path to]/typeofany.browser.js")</script>
Subsequently in your script (for example)
<script>
const isObject = IS({}, Array, Object);
const nothing = null;
const isNothingNull = nothing?.[is](null) || $Wrap(nothing).is(null);
/* ... */
</script>
Create a script tag in your html:
<script src="[path to]/typeofany.browser-factory.js")</script>
Subsequently in your script (for example)
<script>
const {IS, $Wrap} = TOAFactory();
const isObject = IS({}, Array, Object);
const nothing = null;
const isNothingNull = nothing?.is(null) || $Wrap(nothing).is(null);
/* ... */
</script>