From 1ef15c780fbe177096ab3b290aafe976a5da364d Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 9 Feb 2025 12:25:11 +0800 Subject: [PATCH] perf: optimize toDisplayString --- packages/shared/src/toDisplayString.ts | 30 +++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/shared/src/toDisplayString.ts b/packages/shared/src/toDisplayString.ts index b23cf766a5..d279966792 100644 --- a/packages/shared/src/toDisplayString.ts +++ b/packages/shared/src/toDisplayString.ts @@ -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 => { -- 2.47.2