@wopjs/cast - v0.1.12
    Preparing search index...

    @wopjs/cast - v0.1.12

    @wopjs/cast

    Docs Build Status npm-version Coverage Status minified-size

    Type-safe utilities for filtering and coercing unknown values in TypeScript.

    • Three-tier API pattern (is/to/as) for flexible type filtering
    • Strong TypeScript type narrowing that preserves complex types (unions, tuples, readonly arrays)
    • Zero dependencies and tree-shakeable
    • Safe edge case handling (NaN, null, undefined, circular references)
    npm add @wopjs/cast
    

    Every type has up to three functions following a consistent naming pattern:

    Pattern Returns Use Case
    is* boolean Type guards for conditional narrowing
    to* T | undefined Optional values, composable with Option types
    as* T Always returns valid value with fallback
    import { isNumber, toNumber, asNumber } from "@wopjs/cast";

    // is* - Type guard for conditionals
    if (isNumber(value)) {
    value; // type narrowed to number
    }

    // to* - Returns undefined for invalid input
    const num = toNumber(input); // number | undefined

    // as* - Always returns a number (0 as fallback)
    const safeNum = asNumber(input); // number

    The library preserves and correctly narrows complex TypeScript types:

    import { isArray, toArray, isTruthy } from "@wopjs/cast";

    // Preserves array element types
    const arr: string[] = ["a", "b"];
    if (isArray(arr)) {
    arr; // still string[], not unknown[]
    }

    // Extracts from unions
    const value: string | string[] = getData();
    if (isArray(value)) {
    value; // narrowed to string[]
    }

    // Preserves tuples and readonly arrays
    const tuple: [string, number] = ["a", 1];
    const result = toArray(tuple); // [string, number] | undefined

    // Excludes falsy types
    const val: string | null | undefined = "hello";
    if (isTruthy(val)) {
    val; // narrowed to string
    }
    Function Description
    isTrue Returns true if value is exactly true
    toTrue Returns true or undefined
    asTrue Returns true or false
    isTruthy Returns true if Boolean(x) is true
    toTruthy Returns truthy value or undefined
    isFalsy Returns true if Boolean(x) is false
    toFalsy Returns falsy value or undefined
    isBoolean Returns true if value is true or false
    toBoolean Returns boolean or undefined
    Function Description
    isNumber Returns true if value is a number (excluding NaN)
    toNumber Returns number or undefined
    asNumber Returns number or 0
    Function Description
    isString Returns true if value is a string
    toString Returns string or undefined
    asString Returns string or ""
    isNonEmptyString Returns true if value is a non-empty string
    toNonEmptyString Returns non-empty string or undefined
    Function Description
    isArray Type guard for arrays (preserves element types)
    toArray Returns array or undefined
    asArray Returns array or []
    isNonEmptyArray Type guard for non-empty arrays
    toNonEmptyArray Returns non-empty array or undefined
    Function Description
    isObject Returns true for objects (including arrays, excluding null)
    toObject Returns object or undefined
    asObject Returns object or {}
    isPlainObject Returns true for plain objects (excluding arrays)
    toPlainObject Returns plain object or undefined
    asPlainObject Returns plain object or {}
    isNonEmptyPlainObject Returns true for objects with at least one key
    toNonEmptyPlainObject Returns non-empty object or undefined
    isNonEmptyJSONObject Returns true for objects with non-undefined values
    toNonEmptyJSONObject Returns JSON object or undefined
    Function Description
    isDefined Returns true if value is not undefined
    toPlainObjectOf Filter object values by type predicate
    toPlainObjectOfTrue Filter object to only true values
    print Safely stringify any value for display

    Constant functions useful for callbacks and default values:

    Function Returns
    noop void
    returnsUndefined undefined
    returnsNull null
    returnsFalse false
    returnsTrue true
    returnsEmptyString ""
    import {
    asPlainObject,
    asString,
    toNumber,
    asArray,
    toNonEmptyPlainObject,
    toPlainObjectOfTrue,
    isNumber,
    asNumber,
    } from "@wopjs/cast";

    // Parsing unknown API response
    function parseUser(data: unknown) {
    const obj = asPlainObject(data);
    return {
    name: asString(obj.name),
    age: toNumber(obj.age), // undefined if not a number
    tags: asArray(obj.tags),
    settings: toNonEmptyPlainObject(obj.settings),
    };
    }

    // Filtering object values
    const config = { debug: true, verbose: false, enabled: true };
    toPlainObjectOfTrue(config); // { debug: true, enabled: true }

    // Safe number handling
    isNumber(NaN); // false (NaN is excluded)
    asNumber(NaN); // 0 (safe fallback)
    asNumber("42"); // 0 (not coerced, use parseInt for that)