# bare-type

<mark style="{ backgroundColor: '#7dde9a', padding: '2px 8px', borderRadius: '4px', fontSize: '0.85em', fontWeight: 500 }">
  stable
</mark>

[`bare-type`](https://github.com/holepunchto/bare-type) — Cross-realm type predicates for Bare. It is a native addon and requires Bare `>=1.32.0`.

```sh
npm i bare-type
```

## Usage [#usage]

```js
const type = require('bare-type')

if (type(123).isNumber()) {
  console.log(123, 'is a number')
}
```

## API [#api]

### Type [#type]

#### `new Type(type: number)` [#new-typetype-number]

**Parameters**

| Parameter | Type     | Default | Description |
| --------- | -------- | ------- | ----------- |
| `type`    | `number` | —       | —           |

#### `isArguments(): boolean` [#isarguments-boolean]

#### `isArray(): boolean` [#isarray-boolean]

#### `isArrayBuffer(): boolean` [#isarraybuffer-boolean]

#### `isAsyncFunction(): boolean` [#isasyncfunction-boolean]

#### `isAsyncGeneratorFunction(): boolean` [#isasyncgeneratorfunction-boolean]

#### `isBigInt(): boolean` [#isbigint-boolean]

#### `isBigInt64Array(): boolean` [#isbigint64array-boolean]

#### `isBigIntObject(): boolean` [#isbigintobject-boolean]

#### `isBigUint64Array(): boolean` [#isbiguint64array-boolean]

#### `isBoolean(): boolean` [#isboolean-boolean]

#### `isBooleanObject(): boolean` [#isbooleanobject-boolean]

#### `isDataView(): boolean` [#isdataview-boolean]

#### `isDate(): boolean` [#isdate-boolean]

#### `isError(): boolean` [#iserror-boolean]

#### `isExternal(): boolean` [#isexternal-boolean]

#### `isFloat16Array(): boolean` [#isfloat16array-boolean]

#### `isFloat32Array(): boolean` [#isfloat32array-boolean]

#### `isFloat64Array(): boolean` [#isfloat64array-boolean]

#### `isFunction(): boolean` [#isfunction-boolean]

#### `isGenerator(): boolean` [#isgenerator-boolean]

#### `isGeneratorFunction(): boolean` [#isgeneratorfunction-boolean]

#### `isInt16Array(): boolean` [#isint16array-boolean]

#### `isInt32(): boolean` [#isint32-boolean]

#### `isInt32Array(): boolean` [#isint32array-boolean]

#### `isInt8Array(): boolean` [#isint8array-boolean]

#### `isMap(): boolean` [#ismap-boolean]

#### `isModuleNamespace(): boolean` [#ismodulenamespace-boolean]

#### `isNull(): boolean` [#isnull-boolean]

#### `isNumber(): boolean` [#isnumber-boolean]

#### `isNumberObject(): boolean` [#isnumberobject-boolean]

#### `isObject(): boolean` [#isobject-boolean]

#### `isPromise(): boolean` [#ispromise-boolean]

#### `isProxy(): boolean` [#isproxy-boolean]

#### `isRegExp(): boolean` [#isregexp-boolean]

#### `isSet(): boolean` [#isset-boolean]

#### `isSharedArrayBuffer(): boolean` [#issharedarraybuffer-boolean]

#### `isString(): boolean` [#isstring-boolean]

#### `isStringObject(): boolean` [#isstringobject-boolean]

#### `isSymbol(): boolean` [#issymbol-boolean]

#### `isSymbolObject(): boolean` [#issymbolobject-boolean]

#### `isTypedArray(): boolean` [#istypedarray-boolean]

#### `isUint16Array(): boolean` [#isuint16array-boolean]

#### `isUint32(): boolean` [#isuint32-boolean]

#### `isUint32Array(): boolean` [#isuint32array-boolean]

#### `isUint8Array(): boolean` [#isuint8array-boolean]

#### `isUint8ClampedArray(): boolean` [#isuint8clampedarray-boolean]

#### `isUndefined(): boolean` [#isundefined-boolean]

#### `isWeakMap(): boolean` [#isweakmap-boolean]

#### `isWeakRef(): boolean` [#isweakref-boolean]

#### `isWeakSet(): boolean` [#isweakset-boolean]

### Functions [#functions]

#### `type(value: unknown): Type` [#typevalue-unknown-type]

Return a `Type` wrapping `value`, exposing `is*()` predicates to test its runtime type across
realms.

**Parameters**

| Parameter | Type      | Default | Description                 |
| --------- | --------- | ------- | --------------------------- |
| `value`   | `unknown` | —       | The value to wrap and test. |

#### `type.of(value: unknown): number` [#typeofvalue-unknown-number]

Return the runtime type of `value` as a number, for callers that would otherwise walk a long
chain of predicates and can switch on it instead. Every constant carries its base type, so
`constants.ARRAY` matches an array outright.

**Parameters**

| Parameter | Type      | Default | Description        |
| --------- | --------- | ------- | ------------------ |
| `value`   | `unknown` | —       | The value to test. |

### Constants and variables [#constants-and-variables]

#### `type.constants: Constants` [#typeconstants-constants]

The type constants that `of()` returns.

### Types [#types]

#### `Constants` [#constants]

```ts
interface Constants {
  readonly UNDEFINED: number
  readonly NULL: number
  readonly BOOLEAN: number
  readonly NUMBER: number
  readonly STRING: number
  readonly SYMBOL: number
  readonly OBJECT: number
  readonly FUNCTION: number
  readonly EXTERNAL: number
  readonly BIGINT: number
  readonly INT32: number
  readonly UINT32: number
  readonly ARRAY: number
  readonly ARGUMENTS: number
  readonly DATE: number
  readonly REGEXP: number
  readonly ERROR: number
  readonly PROMISE: number
  readonly PROXY: number
  readonly GENERATOR: number
  readonly MAP: number
  readonly SET: number
  readonly WEAK_MAP: number
  readonly WEAK_SET: number
  readonly WEAK_REF: number
  readonly ARRAYBUFFER: number
  readonly SHAREDARRAYBUFFER: number
  readonly TYPEDARRAY: number
  readonly DATAVIEW: number
  readonly MODULE_NAMESPACE: number
  readonly BOOLEAN_OBJECT: number
  readonly NUMBER_OBJECT: number
  readonly STRING_OBJECT: number
  readonly SYMBOL_OBJECT: number
  readonly BIGINT_OBJECT: number
  readonly ASYNC_FUNCTION: number
  readonly GENERATOR_FUNCTION: number
  readonly ASYNC_GENERATOR_FUNCTION: number
  readonly INT8ARRAY: number
  readonly UINT8ARRAY: number
  readonly UINT8CLAMPEDARRAY: number
  readonly INT16ARRAY: number
  readonly UINT16ARRAY: number
  readonly INT32ARRAY: number
  readonly UINT32ARRAY: number
  readonly FLOAT16ARRAY: number
  readonly FLOAT32ARRAY: number
  readonly FLOAT64ARRAY: number
  readonly BIGINT64ARRAY: number
  readonly BIGUINT64ARRAY: number
}
```

## See also [#see-also]

* [Bare modules](/bare/reference/bare/modules) — the full `bare-*` catalog.
* [Bare runtime API](/bare/reference/bare/runtime) — the runtime these modules extend.