File tree 2 files changed +26
-4
lines changed
2 files changed +26
-4
lines changed Original file line number Diff line number Diff line change @@ -11,12 +11,28 @@ describe('toDisplayString', () => {
11
11
} )
12
12
13
13
test ( 'primitive values' , ( ) => {
14
+ expect ( toDisplayString ( 0 ) ) . toBe ( '0' )
14
15
expect ( toDisplayString ( 1 ) ) . toBe ( '1' )
16
+ expect ( toDisplayString ( NaN ) ) . toBe ( 'NaN' )
15
17
expect ( toDisplayString ( true ) ) . toBe ( 'true' )
16
18
expect ( toDisplayString ( false ) ) . toBe ( 'false' )
17
19
expect ( toDisplayString ( 'hello' ) ) . toBe ( 'hello' )
18
20
} )
19
21
22
+ test ( 'primitive values in refs' , ( ) => {
23
+ expect ( toDisplayString ( ref ( 0 ) ) ) . toBe ( '0' )
24
+ expect ( toDisplayString ( ref ( 1 ) ) ) . toBe ( '1' )
25
+ expect ( toDisplayString ( ref ( NaN ) ) ) . toBe ( 'NaN' )
26
+ expect ( toDisplayString ( ref ( true ) ) ) . toBe ( 'true' )
27
+ expect ( toDisplayString ( ref ( false ) ) ) . toBe ( 'false' )
28
+ expect ( toDisplayString ( ref ( 'hello' ) ) ) . toBe ( 'hello' )
29
+ } )
30
+
31
+ test ( 'symbol values' , ( ) => {
32
+ expect ( toDisplayString ( Symbol ( 'hello' ) ) ) . toBe ( 'Symbol(hello)' )
33
+ expect ( toDisplayString ( ref ( Symbol ( 'hello' ) ) ) ) . toBe ( 'Symbol(hello)' )
34
+ } )
35
+
20
36
test ( 'Object and Arrays' , ( ) => {
21
37
const obj = { foo : 123 }
22
38
expect ( toDisplayString ( obj ) ) . toBe ( JSON . stringify ( obj , null , 2 ) )
Original file line number Diff line number Diff line change @@ -10,6 +10,11 @@ import {
10
10
objectToString ,
11
11
} from './general'
12
12
13
+ // can't use isRef here since @vue/shared has no deps
14
+ const isRef = ( val : any ) : val is { value : unknown } => {
15
+ return ! ! ( val && val . __v_isRef === true )
16
+ }
17
+
13
18
/**
14
19
* For converting {{ interpolation }} values to displayed strings.
15
20
* @private
@@ -22,13 +27,14 @@ export const toDisplayString = (val: unknown): string => {
22
27
: isArray ( val ) ||
23
28
( isObject ( val ) &&
24
29
( val . toString === objectToString || ! isFunction ( val . toString ) ) )
25
- ? JSON . stringify ( val , replacer , 2 )
30
+ ? isRef ( val )
31
+ ? toDisplayString ( val . value )
32
+ : JSON . stringify ( val , replacer , 2 )
26
33
: String ( val )
27
34
}
28
35
29
- const replacer = ( _key : string , val : any ) : any => {
30
- // can't use isRef here since @vue/shared has no deps
31
- if ( val && val . __v_isRef ) {
36
+ const replacer = ( _key : string , val : unknown ) : any => {
37
+ if ( isRef ( val ) ) {
32
38
return replacer ( _key , val . value )
33
39
} else if ( isMap ( val ) ) {
34
40
return {
You can’t perform that action at this time.
0 commit comments