@canard/schema-form
Version:
React-based component library that renders forms based on JSON Schema with plugin system support for validators and UI components
32 lines (31 loc) • 1.22 kB
TypeScript
/**
* Parses input value to number format.
*
* Behavior:
* - number type: Returns NaN if NaN, otherwise converts to integer/float
* - string type: Removes all non-numeric characters then parses with parseFloat
* - other types: Returns NaN
*
* String parsing examples:
* - "$1,234.56" → 1234.56 (removes currency symbols and commas)
* - "abc123def" → 123 (removes letters, extracts first number only)
* - "1.2.3" → 1.2 (parseFloat behavior: stops at first valid number)
* - "1-2-3" → 1 (parseFloat behavior: stops at first valid number)
* - "" → NaN (empty string)
*
* Notes:
* - Safely handles large numbers exceeding 32-bit integer range (uses Math.trunc)
* - Multiple decimal points or minus signs may produce unexpected results
*
* @param value - Value to parse (number, string, or other)
* @param isInteger - Whether to return as integer (default: false)
* @returns Parsed number or NaN if parsing is impossible
*
* @example
* parseNumber(123) // 123
* parseNumber('123.456') // 123.456
* parseNumber('$1,234.56') // 1234.56
* parseNumber(123.456, true) // 123
* parseNumber('abc') // NaN
*/
export declare const parseNumber: (value: unknown, isInteger?: boolean) => number;