Skip to content

gaslamp


Variable: FlameGuards

const FlameGuards: object

Predefined type guards for primitives, objects, and GAS sheet values.

Each guard narrows unknown to a specific type. Grouped into three categories: - Primitives: undefined, null, boolean, number, string - Objects: plain object, array, Map, Date - GAS Sheet values: empty string, string-or-number, 2D array (table)

Type Declaration

isUndefined

isUndefined: (value) => value is undefined

Returns true if value is undefined.

Parameters

value

unknown

Returns

value is undefined

isNull

isNull: (value) => value is null

Returns true if value is null.

Parameters

value

unknown

Returns

value is null

isBoolean

isBoolean: (value) => value is boolean

Returns true if value is a boolean (true or false).

Parameters

value

unknown

Returns

value is boolean

true if value is a boolean, false otherwise

isNumber

isNumber: (value) => value is number

Returns true if value is a finite number (excludes NaN).

Parameters

value

unknown

Returns

value is number

true if value is a number and not NaN, false otherwise

isString

isString: (value) => value is string

Returns true if value is a string.

Parameters

value

unknown

Returns

value is string

isFunction

isFunction: (value) => value is (args: unknown[]) => unknown

Returns true if value is a function.

Parameters

value

unknown

Returns

value is (args: unknown[]) => unknown

isPlainObject

isPlainObject: (value) => value is Record<string, unknown>

Returns true if value is a plain object ({}). Arrays and Maps return false.

Parameters

value

unknown

Returns

value is Record<string, unknown>

isArray

isArray: (value) => value is unknown[]

Returns true if value is an array.

Parameters

value

unknown

Returns

value is unknown[]

isMap

isMap: (value) => value is Map<unknown, unknown>

Returns true if value is a Map.

Parameters

value

unknown

Returns

value is Map<unknown, unknown>

isValidDate

isValidDate: (value) => value is Date

Returns true if value is a valid Date (not Invalid Date).

Parameters

value

unknown

Returns

value is Date

true if value is a valid Date instance, false otherwise

Remarks

Uses Object.prototype.toString instead of instanceof Date to avoid false negatives across GAS script boundaries, where Date objects may not share the same constructor reference.

isEmptyString

isEmptyString: (value) => value is ""

Returns true if value is an empty string ("").

Parameters

value

unknown

Returns

value is ""

isStringOrNumber

isStringOrNumber: (value) => value is string | number

Returns true if value is a string or a finite number.

Parameters

value

unknown

Returns

value is string | number

true if value is a string or number (including NaN), false otherwise

Remarks

Useful for validating spreadsheet cell values, which are commonly either text or numeric.

isTable

isTable: (value) => value is unknown[][]

Returns true if value is a 2D array (i.e., an array of arrays).

Parameters

value

unknown

Returns

value is unknown[][]

true if value is a 2D array, false otherwise

Remarks

Matches the shape returned by Sheet.getValues() in Google Apps Script. Each row must be an array; empty arrays and partial rows are accepted.

Example

TypeScript
const data = [["a", "b"], [1, 2]];
FlameGuards.isTable(data); // true

const notTable = [["a", "b"], 123];
FlameGuards.isTable(notTable); // false (second element is not an array)

const empty = [];
FlameGuards.isTable(empty); // true (empty 2D array is valid)

Example

TypeScript
if (FlameGuards.isString(value)) {
  Logger.log(value.toUpperCase()); // value is typed as string
}

if (FlameGuards.isTable(data)) {
  Logger.log(`rows: ${data.length}`); // data is typed as unknown[][]
}

See

FlameWright - Factory for parameterized validators

Since

0.37.0