CxJS

isString

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

The isString type guard checks if a value is a string.

Basic Usage

import { isString } from "cx/util";

isString("hello"); // true
isString(""); // true
isString(`template`); // true
isString(42); // false
isString(null); // false
isString(undefined); // false
isString(["a", "b"]); // false
isString(new String("hello")); // false (String object, not primitive)

Type Narrowing

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

import { isString } from "cx/util";

function formatValue(value: unknown): string {
  if (isString(value)) {
    // value is typed as 'string' here
    return value.toUpperCase();
  }
  return String(value);
}

Common Use Cases

Optional String Parameters

import { isString } from "cx/util";

interface Options {
  label?: string | (() => string);
}

function getLabel(options: Options): string {
  const { label } = options;
  if (isString(label)) {
    return label;
  }
  if (typeof label === "function") {
    return label();
  }
  return "Default Label";
}

Safe String Operations

import { isString } from "cx/util";

function trimIfString(value: unknown): unknown {
  return isString(value) ? value.trim() : value;
}

function toLowerCase(value: unknown): string | null {
  return isString(value) ? value.toLowerCase() : null;
}

Form Input Processing

import { isString } from "cx/util";

function processFormValue(value: unknown): string {
  if (!isString(value)) {
    throw new Error("Expected string value");
  }
  return value.trim();
}

API

function isString(x: unknown): x is string;
ParameterTypeDescription
xunknownThe value to check

Returns: true if the value is a primitive string.