CxJS

isNumber

import { isNumber } from 'cx/util'; Copied

The isNumber type guard checks if a value is a number (including NaN and Infinity).

Basic Usage

import { isNumber } from "cx/util";

isNumber(42); // true
isNumber(3.14); // true
isNumber(0); // true
isNumber(-1); // true
isNumber(NaN); // true (NaN is typeof "number")
isNumber(Infinity); // true
isNumber("42"); // false
isNumber(null); // false
isNumber(undefined); // false
isNumber(new Number(42)); // false (Number object, not primitive)

Type Narrowing

The function is a TypeScript type guard that narrows the type to number.

import { isNumber } from "cx/util";

function calculateTotal(values: unknown[]): number {
  return values.reduce((sum: number, value) => {
    if (isNumber(value)) {
      return sum + value;
    }
    return sum;
  }, 0);
}

Common Use Cases

Numeric Validation

import { isNumber } from "cx/util";

function isValidNumber(value: unknown): value is number {
  return isNumber(value) && !isNaN(value) && isFinite(value);
}

isValidNumber(42); // true
isValidNumber(NaN); // false
isValidNumber(Infinity); // false

Default Values

import { isNumber } from "cx/util";

function getNumericValue(value: unknown, defaultValue: number): number {
  return isNumber(value) && !isNaN(value) ? value : defaultValue;
}

getNumericValue(42, 0); // 42
getNumericValue("42", 0); // 0
getNumericValue(undefined, 0); // 0

Safe Math Operations

import { isNumber } from "cx/util";

function safeAdd(a: unknown, b: unknown): number | null {
  if (isNumber(a) && isNumber(b)) {
    return a + b;
  }
  return null;
}

function formatNumber(value: unknown, decimals: number = 2): string {
  if (isNumber(value) && !isNaN(value)) {
    return value.toFixed(decimals);
  }
  return "N/A";
}

Data Processing

import { isNumber } from "cx/util";

interface DataPoint {
  x: unknown;
  y: unknown;
}

function filterValidPoints(data: DataPoint[]): { x: number; y: number }[] {
  return data.filter(
    (point): point is { x: number; y: number } =>
      isNumber(point.x) && isNumber(point.y)
  );
}

API

function isNumber(x: any): x is number;
ParameterTypeDescription
xanyThe value to check

Returns: true if the value is a primitive number (including NaN and Infinity).