import isArray from './isArray';

/**
 * covert value into number if numeric
 */
function toNumber(val: any): number {
    // numberic values should come first because of -0
    if (typeof val === 'number') return val;
    // we want all falsy values (besides -0) to return zero to avoid
    // headaches
    if (!val) return 0;
    if (typeof val === 'string') return parseFloat(val);
    // arrays are edge cases. `Number([4]) === 4`
    if (isArray(val)) return NaN;
    return Number(val);
}

export default toNumber;
