perf: optimize toDisplayString

This commit is contained in:
Evan You 2025-02-09 12:25:11 +08:00
parent 11383ae72d
commit 1ef15c780f
No known key found for this signature in database
GPG Key ID: 00E9AB7A6704CE0A
1 changed files with 18 additions and 12 deletions

View File

@ -7,7 +7,6 @@ import {
isObject,
isPlainObject,
isSet,
isString,
isSymbol,
objectToString,
} from './general'
@ -22,17 +21,24 @@ const isRef = (val: any): val is { value: unknown } => {
* @private
*/
export const toDisplayString = (val: unknown): string => {
return isString(val)
? val
: val == null
? ''
: isArray(val) ||
(isObject(val) &&
(val.toString === objectToString || !isFunction(val.toString)))
? isRef(val)
? toDisplayString(val.value)
: JSON.stringify(val, replacer, 2)
: String(val)
switch (typeof val) {
case 'string':
return val
case 'object':
if (val) {
if (isRef(val)) {
return toDisplayString(val.value)
} else if (
isArray(val) ||
val.toString === objectToString ||
!isFunction(val.toString)
) {
return JSON.stringify(val, replacer, 2)
}
}
default:
return val == null ? '' : String(val)
}
}
const replacer = (_key: string, val: unknown): any => {