Repository URL to install this package:
|
Version:
3.0.5 ▾
|
import { isSymbol, INFINITY } from 'exotic'
const symbolPrototype = Symbol ? Symbol.prototype : undefined
const symbolToString = symbolPrototype ? symbolPrototype.toString : undefined
/**
* @see https://github.com/lodash/lodash/blob/4ea8c2ec249be046a0f4ae32539d652194caf74f/toString.js
* Converts `value` to a string. An empty string is returned for `null`
* and `undefined` values. The sign of `-0` is preserved.
*
* @since 4.0.0
* @category Lang
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
* @example
*
* toString(null)
* // => ''
*
* toString(-0)
* // => '-0'
*
* toString([1, 2, 3])
* // => '1,2,3'
*/
export default function toStringy(value) {
if (value == null) {
return ''
}
// Exit early for strings to avoid a performance hit in some environments.
if (typeof value == 'string') {
return value
}
if (Array.isArray(value)) {
// Recursively convert values (susceptible to call stack limits).
return `${value.map(other => (other == null ? other : toStringy(other)))}`
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : ''
}
const result = `${value}`
return result == '0' && 1 / value == -INFINITY ? '-0' : result
}