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