Skip to content

Types

[<Interface>]
type Types =
    abstract member isAnyArrayBuffer (object: obj) : bool
    abstract member isArgumentsObject (object: obj) : bool
    abstract member isArrayBuffer (object: obj) : bool
    abstract member isArrayBufferView (object: obj) : bool
    abstract member isAsyncFunction (object: obj) : bool
    abstract member isBigInt64Array (value: obj) : bool
    abstract member isBigIntObject (object: obj) : bool
    abstract member isBigUint64Array (value: obj) : bool
    abstract member isBooleanObject (object: obj) : bool
    abstract member isBoxedPrimitive (object: obj) : bool
    abstract member isCryptoKey (object: obj) : bool
    abstract member isDataView (object: obj) : bool
    abstract member isDate (object: obj) : bool
    abstract member isExternal (object: obj) : bool
    abstract member isFloat16Array (object: obj) : bool
    abstract member isFloat32Array (object: obj) : bool
    abstract member isFloat64Array (object: obj) : bool
    abstract member isGeneratorFunction (object: obj) : bool
    abstract member isGeneratorObject (object: obj) : bool
    abstract member isInt16Array (object: obj) : bool
    abstract member isInt32Array (object: obj) : bool
    abstract member isInt8Array (object: obj) : bool
    abstract member isKeyObject (object: obj) : bool
    abstract member isMap (object: obj) : bool
    abstract member isMapIterator (object: obj) : bool
    abstract member isModuleNamespaceObject (value: obj) : bool
    abstract member isNativeError (object: obj) : bool
    abstract member isNumberObject (object: obj) : bool
    abstract member isPromise (object: obj) : bool
    abstract member isProxy (object: obj) : bool
    abstract member isRegExp (object: obj) : bool
    abstract member isSet (object: obj) : bool
    abstract member isSetIterator (object: obj) : bool
    abstract member isSharedArrayBuffer (object: obj) : bool
    abstract member isStringObject (object: obj) : bool
    abstract member isSymbolObject (object: obj) : bool
    abstract member isTypedArray (object: obj) : bool
    abstract member isUint16Array (object: obj) : bool
    abstract member isUint32Array (object: obj) : bool
    abstract member isUint8Array (object: obj) : bool
    abstract member isUint8ClampedArray (object: obj) : bool
    abstract member isWeakMap (object: obj) : bool
    abstract member isWeakSet (object: obj) : bool
AssemblyXantham.Fable.Node

node:util/types

Declared inside

ExportsThe package's value exports, each bound to its import

Methods

abstract member isAnyArrayBuffer (object: obj) : bool

Returns true if the value is a built-in ArrayBuffer or SharedArrayBuffer instance.

See also util.types.isArrayBuffer() and util.types.isSharedArrayBuffer().

util.types.isAnyArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isAnyArrayBuffer(new SharedArrayBuffer());  // Returns true

@since v10.0.0

abstract member isArgumentsObject (object: obj) : bool

Returns true if the value is an arguments object.

function foo() {
util.types.isArgumentsObject(arguments);  // Returns true
}

@since v10.0.0

abstract member isArrayBuffer (object: obj) : bool

Returns true if the value is a built-in ArrayBuffer instance. This does not include SharedArrayBuffer instances. Usually, it is desirable to test for both; See util.types.isAnyArrayBuffer() for that.

util.types.isArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isArrayBuffer(new SharedArrayBuffer());  // Returns false

@since v10.0.0

abstract member isArrayBufferView (object: obj) : bool

Returns true if the value is an instance of one of the ArrayBuffer views, such as typed array objects or DataView. Equivalent to ArrayBuffer.isView().

util.types.isArrayBufferView(new Int8Array());  // true
util.types.isArrayBufferView(Buffer.from('hello world')); // true
util.types.isArrayBufferView(new DataView(new ArrayBuffer(16)));  // true
util.types.isArrayBufferView(new ArrayBuffer());  // false

@since v10.0.0

abstract member isAsyncFunction (object: obj) : bool

Returns true if the value is an async function. This only reports back what the JavaScript engine is seeing; in particular, the return value may not match the original source code if a transpilation tool was used.

util.types.isAsyncFunction(function foo() {});  // Returns false
util.types.isAsyncFunction(async function foo() {});  // Returns true

@since v10.0.0

abstract member isBigInt64Array (value: obj) : bool

Returns true if the value is a BigInt64Array instance.

util.types.isBigInt64Array(new BigInt64Array());   // Returns true
util.types.isBigInt64Array(new BigUint64Array());  // Returns false

@since v10.0.0

abstract member isBigIntObject (object: obj) : bool

Returns true if the value is a BigInt object, e.g. created by Object(BigInt(123)).

util.types.isBigIntObject(Object(BigInt(123)));   // Returns true
util.types.isBigIntObject(BigInt(123));   // Returns false
util.types.isBigIntObject(123);  // Returns false

@since v10.4.0

abstract member isBigUint64Array (value: obj) : bool

Returns true if the value is a BigUint64Array instance.

util.types.isBigUint64Array(new BigInt64Array());   // Returns false
util.types.isBigUint64Array(new BigUint64Array());  // Returns true

@since v10.0.0

abstract member isBooleanObject (object: obj) : bool

Returns true if the value is a boolean object, e.g. created by new Boolean().

util.types.isBooleanObject(false);  // Returns false
util.types.isBooleanObject(true);   // Returns false
util.types.isBooleanObject(new Boolean(false)); // Returns true
util.types.isBooleanObject(new Boolean(true));  // Returns true
util.types.isBooleanObject(Boolean(false)); // Returns false
util.types.isBooleanObject(Boolean(true));  // Returns false

@since v10.0.0

abstract member isBoxedPrimitive (object: obj) : bool

Returns true if the value is any boxed primitive object, e.g. created by new Boolean(), new String() or Object(Symbol()).

For example:

util.types.isBoxedPrimitive(false); // Returns false
util.types.isBoxedPrimitive(new Boolean(false)); // Returns true
util.types.isBoxedPrimitive(Symbol('foo')); // Returns false
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true
util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true

@since v10.11.0

abstract member isCryptoKey (object: obj) : bool

Returns true if value is a CryptoKey, false otherwise.

@since v16.2.0

abstract member isDataView (object: obj) : bool

Returns true if the value is a built-in DataView instance.

const ab = new ArrayBuffer(20);
util.types.isDataView(new DataView(ab));  // Returns true
util.types.isDataView(new Float64Array());  // Returns false

See also ArrayBuffer.isView().

@since v10.0.0

abstract member isDate (object: obj) : bool

Returns true if the value is a built-in Date instance.

util.types.isDate(new Date());  // Returns true

@since v10.0.0

abstract member isExternal (object: obj) : bool

Returns true if the value is a native External value.

A native External value is a special type of object that contains a raw C++ pointer (void*) for access from native code, and has no other properties. Such objects are created either by Node.js internals or native addons. In JavaScript, they are frozen objects with a null prototype.

#include <js_native_api.h>
#include <stdlib.h>
napi_value result;
static napi_value MyNapi(napi_env env, napi_callback_info info) {
int* raw = (int*) malloc(1024);
napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result);
if (status != napi_ok) {
napi_throw_error(env, NULL, "napi_create_external failed");
return NULL;
}
return result;
}
...
DECLARE_NAPI_PROPERTY("myNapi", MyNapi)
...
import native from 'napi_addon.node';
import { types } from 'node:util';

const data = native.myNapi();
types.isExternal(data); // returns true
types.isExternal(0); // returns false
types.isExternal(new String('foo')); // returns false

For further information on napi_create_external, refer to napi_create_external().

@since v10.0.0

abstract member isFloat16Array (object: obj) : bool

Returns true if the value is a built-in Float16Array instance.

util.types.isFloat16Array(new ArrayBuffer());  // Returns false
util.types.isFloat16Array(new Float16Array());  // Returns true
util.types.isFloat16Array(new Float32Array());  // Returns false

@since v22.16.0

abstract member isFloat32Array (object: obj) : bool

Returns true if the value is a built-in Float32Array instance.

util.types.isFloat32Array(new ArrayBuffer());  // Returns false
util.types.isFloat32Array(new Float32Array());  // Returns true
util.types.isFloat32Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isFloat64Array (object: obj) : bool

Returns true if the value is a built-in Float64Array instance.

util.types.isFloat64Array(new ArrayBuffer());  // Returns false
util.types.isFloat64Array(new Uint8Array());  // Returns false
util.types.isFloat64Array(new Float64Array());  // Returns true

@since v10.0.0

abstract member isGeneratorFunction (object: obj) : bool

Returns true if the value is a generator function. This only reports back what the JavaScript engine is seeing; in particular, the return value may not match the original source code if a transpilation tool was used.

util.types.isGeneratorFunction(function foo() {});  // Returns false
util.types.isGeneratorFunction(function* foo() {});  // Returns true

@since v10.0.0

abstract member isGeneratorObject (object: obj) : bool

Returns true if the value is a generator object as returned from a built-in generator function. This only reports back what the JavaScript engine is seeing; in particular, the return value may not match the original source code if a transpilation tool was used.

function* foo() {}
const generator = foo();
util.types.isGeneratorObject(generator);  // Returns true

@since v10.0.0

abstract member isInt16Array (object: obj) : bool

Returns true if the value is a built-in Int16Array instance.

util.types.isInt16Array(new ArrayBuffer());  // Returns false
util.types.isInt16Array(new Int16Array());  // Returns true
util.types.isInt16Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isInt32Array (object: obj) : bool

Returns true if the value is a built-in Int32Array instance.

util.types.isInt32Array(new ArrayBuffer());  // Returns false
util.types.isInt32Array(new Int32Array());  // Returns true
util.types.isInt32Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isInt8Array (object: obj) : bool

Returns true if the value is a built-in Int8Array instance.

util.types.isInt8Array(new ArrayBuffer());  // Returns false
util.types.isInt8Array(new Int8Array());  // Returns true
util.types.isInt8Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isKeyObject (object: obj) : bool

Returns true if value is a KeyObject, false otherwise.

@since v16.2.0

abstract member isMap (object: obj) : bool

Returns true if the value is a built-in Map instance.

util.types.isMap(new Map());  // Returns true

@since v10.0.0

abstract member isMapIterator (object: obj) : bool

Returns true if the value is an iterator returned for a built-in Map instance.

const map = new Map();
util.types.isMapIterator(map.keys());  // Returns true
util.types.isMapIterator(map.values());  // Returns true
util.types.isMapIterator(map.entries());  // Returns true
util.types.isMapIterator(map[Symbol.iterator]());  // Returns true

@since v10.0.0

abstract member isModuleNamespaceObject (value: obj) : bool

Returns true if the value is an instance of a Module Namespace Object.

import * as ns from './a.js';

util.types.isModuleNamespaceObject(ns);  // Returns true

@since v10.0.0

abstract member isNativeError (object: obj) : bool

Returns true if the value was returned by the constructor of a built-in Error type.

console.log(util.types.isNativeError(new Error()));  // true
console.log(util.types.isNativeError(new TypeError()));  // true
console.log(util.types.isNativeError(new RangeError()));  // true

Subclasses of the native error types are also native errors:

class MyError extends Error {}
console.log(util.types.isNativeError(new MyError()));  // true

A value being instanceof a native error class is not equivalent to isNativeError() returning true for that value. isNativeError() returns true for errors which come from a different realm while instanceof Error returns false for these errors:

import { createContext, runInContext } from 'node:vm';
import { types } from 'node:util';

const context = createContext({});
const myError = runInContext('new Error()', context);
console.log(types.isNativeError(myError)); // true
console.log(myError instanceof Error); // false

Conversely, isNativeError() returns false for all objects which were not returned by the constructor of a native error. That includes values which are instanceof native errors:

const myError = { __proto__: Error.prototype };
console.log(util.types.isNativeError(myError)); // false
console.log(myError instanceof Error); // true

@since v10.0.0

abstract member isNumberObject (object: obj) : bool

Returns true if the value is a number object, e.g. created by new Number().

util.types.isNumberObject(0);  // Returns false
util.types.isNumberObject(new Number(0));   // Returns true

@since v10.0.0

abstract member isPromise (object: obj) : bool

Returns true if the value is a built-in Promise.

util.types.isPromise(Promise.resolve(42));  // Returns true

@since v10.0.0

abstract member isProxy (object: obj) : bool

Returns true if the value is a Proxy instance.

const target = {};
const proxy = new Proxy(target, {});
util.types.isProxy(target);  // Returns false
util.types.isProxy(proxy);  // Returns true

@since v10.0.0

abstract member isRegExp (object: obj) : bool

Returns true if the value is a regular expression object.

util.types.isRegExp(/abc/);  // Returns true
util.types.isRegExp(new RegExp('abc'));  // Returns true

@since v10.0.0

abstract member isSet (object: obj) : bool

Returns true if the value is a built-in Set instance.

util.types.isSet(new Set());  // Returns true

@since v10.0.0

abstract member isSetIterator (object: obj) : bool

Returns true if the value is an iterator returned for a built-in Set instance.

const set = new Set();
util.types.isSetIterator(set.keys());  // Returns true
util.types.isSetIterator(set.values());  // Returns true
util.types.isSetIterator(set.entries());  // Returns true
util.types.isSetIterator(set[Symbol.iterator]());  // Returns true

@since v10.0.0

abstract member isSharedArrayBuffer (object: obj) : bool

Returns true if the value is a built-in SharedArrayBuffer instance. This does not include ArrayBuffer instances. Usually, it is desirable to test for both; See util.types.isAnyArrayBuffer() for that.

util.types.isSharedArrayBuffer(new ArrayBuffer());  // Returns false
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // Returns true

@since v10.0.0

abstract member isStringObject (object: obj) : bool

Returns true if the value is a string object, e.g. created by new String().

util.types.isStringObject('foo');  // Returns false
util.types.isStringObject(new String('foo'));   // Returns true

@since v10.0.0

abstract member isSymbolObject (object: obj) : bool

Returns true if the value is a symbol object, created by calling Object() on a Symbol primitive.

const symbol = Symbol('foo');
util.types.isSymbolObject(symbol);  // Returns false
util.types.isSymbolObject(Object(symbol));   // Returns true

@since v10.0.0

abstract member isTypedArray (object: obj) : bool

Returns true if the value is a built-in TypedArray instance.

util.types.isTypedArray(new ArrayBuffer());  // Returns false
util.types.isTypedArray(new Uint8Array());  // Returns true
util.types.isTypedArray(new Float64Array());  // Returns true

See also ArrayBuffer.isView().

@since v10.0.0

abstract member isUint16Array (object: obj) : bool

Returns true if the value is a built-in Uint16Array instance.

util.types.isUint16Array(new ArrayBuffer());  // Returns false
util.types.isUint16Array(new Uint16Array());  // Returns true
util.types.isUint16Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isUint32Array (object: obj) : bool

Returns true if the value is a built-in Uint32Array instance.

util.types.isUint32Array(new ArrayBuffer());  // Returns false
util.types.isUint32Array(new Uint32Array());  // Returns true
util.types.isUint32Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isUint8Array (object: obj) : bool

Returns true if the value is a built-in Uint8Array instance.

util.types.isUint8Array(new ArrayBuffer());  // Returns false
util.types.isUint8Array(new Uint8Array());  // Returns true
util.types.isUint8Array(new Float64Array());  // Returns false

@since v10.0.0

abstract member isUint8ClampedArray (object: obj) : bool

Returns true if the value is a built-in Uint8ClampedArray instance.

util.types.isUint8ClampedArray(new ArrayBuffer());  // Returns false
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // Returns true
util.types.isUint8ClampedArray(new Float64Array());  // Returns false

@since v10.0.0

abstract member isWeakMap (object: obj) : bool

Returns true if the value is a built-in WeakMap instance.

util.types.isWeakMap(new WeakMap());  // Returns true

@since v10.0.0

abstract member isWeakSet (object: obj) : bool

Returns true if the value is a built-in WeakSet instance.

util.types.isWeakSet(new WeakSet());  // Returns true

@since v10.0.0