---
tags: zeta-dom
---
# Predicates
### `either`
A shorthand for `a ^ b` in TypeScript without need of casting.
```typescript
either(a, b)
```
### `is`
Tests whether a given object is an instance of the specified function.
```typescript
is(value, functionOrClass)
```
### `isUndefinedOrNull`
Tests whether a given value is `undefined` or `null`.
```typescript
isUndefinedOrNull(value)
```
### `isArray`
Tests whether the value is an array.
```typescript
isArray(obj)
```
### `isFunction`
Tests whether the value is a fuction.
```typescript
isFunction(obj)
```
Returns the same instance of function if it is a function; otherwise `false`.
### `isThenable`
Tests whether the value is thenable, i.e. can be chained as a Promise.
```typescript
isThenable(obj)
```
Returns The same instance of function if it is thenable; otherwise `false`.
### `isPlainObject`
Tests whether the value is a simple object, i.e. created with object literal {}, or with no prototype chain.
```typescript
isPlainObject(obj)
```
Returns The same instance of object if it is a simple object; otherwise `false`.
### `isArrayLike`